Предлагаю всем миром написать советник по ТС Кукловод.

От denis77515, 10 марта, 2014 в Архив

Страница 2 из 2
#26


Oll я не много не понял вашу мысль. Я переписал его, но добавились 4 одинаковые функции правда с разными лотами.Как вы думаете будет это все работать ?

Нет так работать не будет.
Постараюсь объяснить:
1. Вычисляем количество рабочих пар через размеры массивов (напр. pairCount =7)
2. Если открытых ордеров нет (=0), то просто вычисляем направление торговли Плюс, Минус или торговли нет.
3. В зависимости от количества открытых ордеров вычисляем на какой ступени усреднения находимся Nusr = oCount/pairCount; if (Nusr > 3) return(0);
3.1. если Nusr > 0 , то надо проверить индикатор (в зависимости от номера усреднения и направления ). Если с инд. разрешает, то
4. Вычисляем лот oLot = Lots* MathPow(Martin,Nusr); (будет работать даже при первом входе Nusr=0)
5. По выбранному ранее направлению открываем ордера заданным лотом.
ВСЁ.
Автор#27

Да дорогой друг Oll, задали вы головоломку :d. Да казалась бы задумка не большая а реализовать ее для меня сложно. Но это хорошо, тем что на сложных вещах и учишся. Давайте как то начнем то есть с начала.
1. Вычисляем количество рабочих пар через размеры массивов (напр. pairCount =7)
Просто для меня массивы сложновато пока, я их плохо понимаю. Надеюсь с вашей помощью пойму и разберусь как с ними правильно работать.

#28


1. Вычисляем количество рабочих пар через размеры массивов (напр. pairCount =7)
Просто для меня массивы сложновато пока, я их плохо понимаю. Надеюсь с вашей помощью пойму и разберусь как с ними правильно работать.

Это у Вас уже есть:
Size = ArraySize(sym);
size = ArraySize(sy);
pairCount = Size + size;
Размеры массивов и количество рабочих пар вычисляются один раз в ините! Ведь они не меняются в процессе выполнения программы!

Потом по списку
Спойлер

     if(Totale == 0) 
{
Плюс = false; Минус = false;
if(usd >= indi_plus && usd if(usd = indi_minus1) Минус = true;
if(!Плюс && !Минус ) return(0);
}
else
{
Nusr = Totale/pairCount;
if (Nusr > 3) return(0); //Выход по превышению попыток усреднения
}
if(Nusr == 0) //Первый вход
{
if(Плюс ) Open_Plus();
if(Минус ) Open_Minus();
}
else //Усреднение
{
oLot = Lots* MathPow(Martin,Nusr);
if(Плюс && Условия_Plus(Nusr)) Open_Plus();
if(Минус && Условия_Minus(Nusr)) Open_Minus();
}

В функцию Условия_Plus(Nusr) запишите свои условия типа:
if(Nusr == 1 && usd >= indi_plusM1 && usd и так далее - понятно?
Автор#29

Cпасибо Oll сегодня,или завтра сяду буду писать и вникать в это.Чего не пойму то напишу.но вроде бы пока все понятно объяснили !


Добавлено: 28-06-2014 17:16:09

Oll функциях Open_Plus(); Open_Minus(); использовать их, или все таки писать дополнительные для изменения лота.Что то я не понял
Или написать oLot=Lots, oLot использовать в OrderSend(); в функциях Open_Plus(); Open_Minus(); а потом уже ниже в коде умнажать на мультиплер. просто я не сооброжу как оно так работать будет.Мне кажется что не будет так работать.

Изменено 28 июня, 2014 пользователем denis77515

#30


функциях Open_Plus(); Open_Minus(); использовать их, или все таки писать дополнительные для изменения лота.Что то я не понял

Всё будет работать, только надо расчёт лота перенести повыше - сразу после расчёта Nusr до 1 входа.
В функциях Open_Plus(); Open_Minus(); поменяй Lots на oLot.

Изменено 28 июня, 2014 пользователем 0ll

Автор#31

Доброго времени Oll написать я написал,только запутался на прочь.на данный момент выдает кучу ошибок.Взгляните,и подскажите чего я там не так намудрил.или может глаз замылился не вижу очевидного. :d

Спойлер



#include
#include
//+------------------------------------------------------------------+
//| Test KUKLOVOD 2.mq4 |
//| Copyright 2014, MetaQuotes Software Corp. |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
#property strict
extern double Lots = 0.01;
extern double Multipler = 1.68;
extern int Slippage = 5;
extern double Percent = 20.0;
extern int Magic = 11111;
extern double indi_plus = 70.0;
extern double indi_plus1 = 70.5;
extern double indi_plusM1 = 80.0;
extern double indi_plusM_1 = 80.5;
extern double indi_plusM2 = 90.0;
extern double indi_plusM_2 = 90.5;
//--------------------------------+
extern double indi_minus = -70.0;
extern double indi_minus1 = -70.5;
extern double indi_minusM1 = -80.0;
extern double indi_minusM_1 = -80.5;
extern double indi_minusM2 = -90.0;
extern double indi_minusM_2 = -90.5;
extern double CloseProfitPlus = -1.0;
extern double CloseProfitMinus = 1.0;
double usd,ubitok,oLots;
int ticket,Size,size,retries,Total,pairCount,Nusrs,Nusr;
string sy[] = {"USDCAD","USDCHF","USDJPY"};
string sym[] = {"EURUSD","GBPUSD","AUDUSD","NZDUSD"};
bool plus = false,minus = false;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if(Digits == 5 || Digits == 3)
{
if(Digits == 4 || Digits == 2)
{
Slippage *= 10;
}
}
//---
Size = ArraySize(sym);
size = ArraySize(sy);
pairCount = Size + size;
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---

}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
oLots=Lots;
usd = iCustom(Symbol(),PERIOD_D1,"Kuklovod_USD",7,0);
Total=CountTrades();
if(Total == 0)
{
if(usd >= indi_plus && usd if(usd = indi_minus1) minus = true;
if(!plus && !minus) return;
}
else
{
Nusr = Total/pairCount;
if (Nusr > 3) return;
}
if(Nusr == 0)
{
if(plus == true) Open_Plus();
if(minus == true) Open_Minus();
}
else
{
oLots = Lots * MathPow(Multipler,Nusr);
if(plus == true && Uslovie_Plus(Nusr)) Open_Plus();
if(minus == true && Uslovie_Ninus(Nusr)) Open_Minus();
}
else
{
oLots = Lots * MathPow(Multipler,Nusr);
if(plus == true && Uslovie_Plus_1(Nusr)) Open_Plus();
if(minus == true && Uslovie_Ninus_1(Nusr)) Open_Minus();
}
//---
}
//---------Функция показания индикатора для 2 усреднения--------+
double Uslovie_Ninus_1(int Nusr)
{
if(Nusr == 2 && usd >= indi_minusM2 && usd }
//---------Функция показания индикатора для 1 усреднения--------+
double Uslovie_Ninus(int Nusr)
{
if(Nusr == 1 && usd >= indi_minusM1 && usd }
//---------Функция показания индикатора для 2 усреднения--------+
double Uslovie_Plus_1(int Nusr)
{
if(Nusr == 2 && usd >= indi_plusM2 && usd }
//---------Функция показания индикатора для 1 усреднения--------+
double Uslovie_Plus(int Nusr)
{
if(Nusr == 1 && usd >= indi_plusM1 && usd }
//-------------------Функция открытия ордеров-------------------+
void Open_Minus()
{
for(int c=Size-1; c >=0; c--)
{
OrderSendReliable(sym[c],OP_SELL,oLots,Bid,Slippage,0,0,"Кукловод -70",Magic,0,clrRed);
}
for(int e=size-1; e>=0; e--)
{
OrderSendReliable(sy[e],OP_BUY,oLots,Ask,Slippage,0,0,"Кукловод -70",Magic,0,clrGreen);
}
}

//+------------------Функция открытия ордеров--------------------+
void Open_Plus()
{
for(int a=Size-1; a >=0; a--)
{
OrderSendReliable(sym[a],OP_BUY,oLots,Ask,Slippage,0,0,"Кукловод +70",Magic,0,clrGreen);
}
for(int b=size-1; b>=0; b--)
{
OrderSendReliable(sy,OP_SELL,oLots,Bid,Slippage,0,0,"Кукловод +70",Magic,0,clrRed);
}
}

//+---------------Функция перебора ордеров с праверкой на магик-------+
int CountTrades()
{
int count = 0;
for(int i=OrdersTotal()-1; i >= 0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderMagicNumber() == Magic)
count++;
}
}
return(count);
}
//----------------Функция оброботки ошибок---------------------------+
int OrderSendReliable(string asymbol, int cmd, double volume, double aprice,
int slippage, double stoploss, double takeprofit,
string acomment, int magic, datetime expiration = 0,
color arrow_color = CLR_NONE)
{
int err = GetLastError();
err = 0;
bool exit_loop = false;
bool limit_to_market = false;

err = GetLastError();
err = 0;
ticket = -1;

if ((cmd == OP_BUY) || (cmd == OP_SELL))
{
int cnt = 0;
while (!exit_loop)
{
if (IsTradeAllowed())
{
ticket = OrderSend(asymbol, cmd, volume, aprice, slippage,
stoploss, takeprofit, acomment, magic,
expiration, arrow_color);
err = GetLastError();
}
else
{
cnt++;
}
switch (err)
{
case ERR_NO_ERROR:
exit_loop = true;
break;

case ERR_SERVER_BUSY:
case ERR_NO_CONNECTION:
case ERR_INVALID_PRICE:
case ERR_OFF_QUOTES:
case ERR_BROKER_BUSY:
case ERR_TRADE_CONTEXT_BUSY:
cnt++;
break;

case ERR_PRICE_CHANGED:
case ERR_REQUOTE:
RefreshRates();
continue;

default:
exit_loop = true;
break;

} // end switch

if (cnt > retries)
exit_loop = true;

if (!exit_loop)
{
Sleep(1000);
RefreshRates();
}

if (exit_loop)
{
if (err != ERR_NO_ERROR)
{
Alert("Ошибка : " + IntegerToString(err));
}
}
}

if (err == ERR_NO_ERROR)
{
if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
return(ticket);
}
Alert("Ошибка открытия ордера после " + IntegerToString(cnt) + " попыток.");
Alert("Ошибка : " + IntegerToString(err));
return(-1);
}
return(-1);
}
//+------------------------------------------------------------------+

#32


я написал,только запутался на прочь.на данный момент выдает кучу ошибок.Взгляните,и подскажите чего я там не так намудрил.или может глаз замылился не вижу очевидного.

Ошибок было валом. Переделал всё, но запустить не могу - нет индюка.

Kuklovod_0ll_mod_1.3.mq421 скач.

Автор#33

Oll спасибо,вот индюки к этой системе

Новая_папка.zip34 скач.

#34


Oll спасибо,вот индюки к этой системе

Да Вы в первый пост выкладывайте. И если будет работать, то и результаты теста, сеты.
Только тест надо хитро делать по каждой паре, а я не знаю, что в индюках - если они мультивалютные - то привет - только демо...
Автор#35

Я так и сделаю,там 3 индикатора. Хочу написать 3 советника для каждой корзины ордеров отдельно для начала. А потом объединить все в одном. Далее поставить либо на демку, либо на центовик.Вот что дает ручная торговля.
http://www.myfxbook.com/members/denis77515/кукловод-usd/848691

#36

исправил кой-чего.

Kuklovod_0ll_mod_1.4.mq438 скач.

Автор#37

0ll Спасибо. я если чесно разницы не заметил >:d


Добавлено: 30-06-2014 17:58:16

oll Привет, сегодня скриптами открыл ордера с магиком нашего советника, что бы он их подхватил (по крайней мере я так подумал,так как он ведет их по магику), индиктор достиг значения - 91,но ордера доливки так и не открылись. Вопрос почему ? Чего не так что написано или депо маленькое. Или все таки он будет открывать свои ордера и вести их ? Депо 5000 usd плече 500:1. первые ордера открыты были лотом 0.1, вторые 0.2.

Изменено 30 июня, 2014 пользователем denis77515

Автор#38

Господа программисты написал код по одной корзине как подсказал дружище Oll с точными изначальными правилами системы как описывал Павел и добавил свое,то есть вход в обратном направлении с использованием мартина.Все здорово получилось но есть проблема.там есть такая строчка oLots=Lots; Если я пишу oLots в OrderSend(); то он не открывает не чего. Если же пишу Lots то все работает,но естественно только без доливок. Сегодня почитал учебник по MQL но так не понял в чем может быть проблема. Люди подскажите плиз !!! >:d

Спойлер


//+------------------------------------------------------------------+
//| Проба Кукловод.mq4 |
//| Copyright 2014, MetaQuotes Software Corp. |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
#property strict
extern bool Korzina_JPY = true;
extern bool Korzina_JPY_Martin = false;
extern double Lots = 0.1;
extern double Multipler = 1.68;
extern int Slippage = 5;
extern int Magic_jpy = 33333;
extern double Percent_Risk = 20.0;
extern double indi_jpy_plus_10_30 = 10.0;
extern double indi_jpy_plus_10_30a = 30.0;
extern double indi_jpy_TakeProfit = 70.0;
extern double indi_jpy_StopLoss = -10;
extern double indi_jpy_StopLoss_1 = -11;
//----------------------------------------+
extern double indi_jpy_Minus_10_30 = -10.0;
extern double indi_jpy_Minus_10_30c = -30.0;
extern double indi_jpy_TakeProfit_b = -70.0;
extern double indi_jpy_StopLoss_b = 10;
extern double indi_jpy_StopLoss_b_1 = 11;
////////////////////////////////////////////
extern double indi_jpy_martin_70_M = -70;
extern double indi_jpy_martin_70_M1 = -71;
extern double indi_jpy_martin_80_M = -80;
extern double indi_jpy_martin_80_M1 = -81;
extern double indi_jpy_martin_90_M = -90;
extern double indi_jpy_martin_90_M1 = -91;
//-----------------------------------------
extern double indi_jpy_martin_70_P = 70;
extern double indi_jpy_martin_70_P1 = 71;
extern double indi_jpy_martin_80_P = 80;
extern double indi_jpy_martin_80_P1 = 81;
extern double indi_jpy_martin_90_P = 90;
extern double indi_jpy_martin_90_P1 = 91;
extern double MartinTakeProfiteM = 1;
extern double MartinTakeProfiteM1 = 5;
extern double MartinTakeProfiteP = -1;
extern double MartinTakeProfiteP1 = -5;
int ticket,size_jpy,retries,Total,pairCount_JPY,Nusr;
double indi_jpy,oLots;
datetime timeprev;
string jpy[] = {"AUDJPY","CADJPY","CHFJPY","EURJPY","GBPJPY","NZDJPY","USDJPY"};
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if(Digits == 5 || Digits == 3)
{
if(Digits == 4 || Digits == 2)
{
Slippage *= 10;
}
}
size_jpy = ArraySize(jpy);
pairCount_JPY = size_jpy;
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
oLots=Lots;
indi_jpy = iCustom(Symbol(),PERIOD_D1,"Kuklovod_JPY",7,0);
bool plus = false,minus = false,plusx = false,minusx = false,stoploss=false,takeprofite=false;
Total=CountTrades();

if(Time[0] == timeprev) return;
timeprev=Time[0];
if(Korzina_JPY == true){
if(Total == 0 && timeprev && indi_jpy >= indi_jpy_plus_10_30 && indi_jpy if(Total == 0 && timeprev && indi_jpy = indi_jpy_Minus_10_30c) minus = true;
if(!plus && !minus) return;
if(plus == true) { Open_Sell_JPY();}
if(minus == true) { Open_Buy_JPY(); }
if(Total > 0 && indi_jpy >= indi_jpy_TakeProfit) takeprofite=true;
if(takeprofite==true) {Close_Orders_JPY();}
if(Total > 0 && indi_jpy = indi_jpy_StopLoss_1) stoploss=true;
if(stoploss==true) {Close_Orders_JPY();}
if(Total > 0 && indi_jpy if(takeprofite==true) {Close_Orders_JPY();}
if(Total > 0 && indi_jpy>=indi_jpy_StopLoss_b && indi_jpy if(stoploss==true) {Close_Orders_JPY();}
}
//------------------------------------------------------------------------------------------------------------------------------------------+
if(Korzina_JPY_Martin == true)
{
if(Total == 0)
{
if(indi_jpy =indi_jpy_martin_70_M1) plusx = true;
if(indi_jpy >= indi_jpy_martin_70_P && indi_jpy if(!plusx && !minusx) return;
Nusr = 0;
}
else
{
Nusr = Total/pairCount_JPY;
if (Nusr > 3) return;
}
oLots = Lots * MathPow(Multipler,Nusr);
if(plusx == true && Uslovie_Buy_JPY()) {Open_Buy_JPY();}
if(minusx == true && Uslovie_Sell_JPY()) {Open_Sell_JPY();}
bool closprofiteM = false,closprofiteP = false,close_loss=false;

if(Total > 0 && indi_jpy >= MartinTakeProfiteM && indi_jpy if(closprofiteM == true) {Close_Orders_JPY();}
if(Total > 0 && indi_jpy = MartinTakeProfiteP1) closprofiteP = true;
if(closprofiteP == true) {Close_Orders_JPY();}
close_loss=NormalizeDouble(AccountBalance()/100*Percent_Risk + OrderProfit() if(close_loss) Close_Orders_JPY();
}//if(Korzina_JPY_Martin == true)
//---
}//void OnTick()
//-------------------Условие для долики ордеров----------------------+
bool Uslovie_Sell_JPY()
{
bool res = false;
if(Nusr == 0) res = true;
if(Nusr == 1 && indi_jpy >= indi_jpy_martin_80_P && indi_jpy if(Nusr == 2 && indi_jpy >= indi_jpy_martin_90_P && indi_jpy return(res);
}
//-------------------Условие для долики ордеров----------------------+
bool Uslovie_Buy_JPY()
{
bool res = false;
if(Nusr == 0) res = true;
if(Nusr == 1 && indi_jpy = indi_jpy_martin_80_M1) res = true;
if(Nusr == 2 && indi_jpy = indi_jpy_martin_90_M1) res = true;
return(res);
}
//-------------------Функция закрытия ордеров JPY--------------------+
void Close_Orders_JPY()
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderMagicNumber() == Magic_jpy)
{
if(OrderType() == OP_BUY || OrderType() == OP_SELL)
{
if(OrderType() == OP_BUY) if(OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrYellow))Print("Ордер закрыт успешно ! "+OrderSymbol());Alert("Ошибка закрытия № "+IntegerToString(GetLastError())+" ордера посимволу "+OrderSymbol());
if(OrderType() == OP_SELL) if(OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrYellow))Print("Ордер закрыт успешно ! "+OrderSymbol());Alert("Ошибка закрытия № "+IntegerToString(GetLastError())+" ордера посимволу "+OrderSymbol());
}
}
}
}
}
//+------------------Функция открытия ордеров--------------------+
void Open_Buy_JPY()
{
int c;
for(c=size_jpy-1; c >=0; c--)
{
OrderSendReliable(jpy[c],OP_BUY,oLots,Ask,Slippage,0,0,"",Magic_jpy,0,clrGreen);
}
}
//-------------------Функция открытия ордеров-------------------+
void Open_Sell_JPY()
{
int c;
for(c=size_jpy-1; c >=0; c--)
{
OrderSendReliable(jpy[c],OP_SELL,oLots,Bid,Slippage,0,0,"",Magic_jpy,0,clrRed);
}
}
//+------------------------------------------------------------------+
int CountTrades()
{
int count = 0;
for(int i=OrdersTotal()-1; i >= 0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderMagicNumber() == Magic_jpy) count++;
}
return(count);
}
//----------------Функция оброботки ошибок---------------------------+
int OrderSendReliable(string asymbol, int cmd, double volume, double aprice,
int slippage, double stoploss, double takeprofit,
string acomment, int magic, datetime expiration = 0,
color arrow_color = CLR_NONE)
{
int err = GetLastError();
err = 0;
bool exit_loop = false;
bool limit_to_market = false;

err = GetLastError();
err = 0;
ticket = -1;

if ((cmd == OP_BUY) || (cmd == OP_SELL))
{
int cnt = 0;
while (!exit_loop)
{
if (IsTradeAllowed())
{
ticket = OrderSend(asymbol, cmd, volume, aprice, slippage,
stoploss, takeprofit, acomment, magic,
expiration, arrow_color);
err = GetLastError();
}
else
{
cnt++;
}
switch (err)
{
case ERR_NO_ERROR:
exit_loop = true;
break;

case ERR_SERVER_BUSY:
case ERR_NO_CONNECTION:
case ERR_INVALID_PRICE:
case ERR_OFF_QUOTES:
case ERR_BROKER_BUSY:
case ERR_TRADE_CONTEXT_BUSY:
cnt++;
break;

case ERR_PRICE_CHANGED:
case ERR_REQUOTE:
RefreshRates();
continue;

default:
exit_loop = true;
break;

} // end switch

if (cnt > retries)
exit_loop = true;

if (!exit_loop)
{
Sleep(1000);
RefreshRates();
}

if (exit_loop)
{
if (err != ERR_NO_ERROR)
{
Alert("Ошибка : " + IntegerToString(err));
}
}
}

if (err == ERR_NO_ERROR)
{
if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
return(ticket);
}
Alert("Ошибка открытия ордера после " + IntegerToString(cnt) + " попыток."+" по символу "+OrderSymbol());
Alert("Ошибка : " + IntegerToString(err));
return(-1);
}
return(-1);
}
//+------------------------------------------------------------------+

#39

а никто не хочет из программистов сделать советник по 8 корзинам? по индикатору PotenzaFX - это тоже самое что и кукловод

Спойлер

Автор#40

Замачиво,но тут с этой разобраться.


Добавлено: 01-07-2014 16:06:25

odin343 Опиши что как работать должно по подробнее. И индикатор скинь.Займусь для практики.

Изменено 1 июля, 2014 пользователем denis77515

#41


Замачиво,но тут с этой разобраться.


Добавлено: 01-07-2014 16:06:25

odin343 Опиши что как работать должно по подробнее. И индикатор скинь.Займусь для практики.


Вот сам индикатор,

_http://rghost.ru/56678341

в настройках индикатора нужно поставить true в строке show_all, чтобы показывал все валюты

Принцип работы советника - входим корзиной из 7 пар при достижении отметки индикатора + или - 70

корзины валют



обязательно нужен трал по валюте и стоплосс

пример: AUD достиг +70, открываем корзину на продажу - все AUDxxx продаём, а xxxAUD покупаем
#42


есть проблема.там есть такая строчка oLots=Lots; Если я пишу oLots в OrderSend(); то он не открывает не чего. Если же пишу Lots то все работает

Может нормализовать oLots надо? В журнал пишет чего-нибудь?
Увидел ошибку: вы не использовали мой код мод 1.4? у Вас не сбрасываются флаги плюс и минус в false.
У Вас много всяких СтопЛоссов и ТейкПрофитов а 4 или 5 зн.? В ините странная конструкция:
if(Digits == 5 || Digits == 3)
{
if(Digits == 4 || Digits == 2)
{
Slippage *= 10;
}
}
Это что тут написано? Расшифровка (если 5 или 3 то -> если 4 или 2 то -> @-) )

Изменено 1 июля, 2014 пользователем 0ll

Автор#43

я не знаю почему,но по паре usdjpy постоянно выскакивала ошибка 4107 Неправильный параметр цены для торговой функции.
написал так прекратило ошибка выскакивать.так и оставил пока.В журнале только пишет что советник иницилизирован, его внешние параметры и все. я вообще чего то не понимаю,вчера не работало,сегодня открыл новую демку ECN-Demo ,стало работать. пробовал забивать параметры усреднения,опять не работает. а ваш код 1.4 я использовал как без него.Я сначала отличия не заметил от 1.3.
потом нашел что переменная Nusr не много по разному написана.

Автор#44

Oll Здрастуйте,вот написал как бы законченный вариант бота.Я конечно понимаю что там ошибок не мало,долго изучал ваш код и использовал его.Посмотрите пожалуйста код, выскажите свое мнение и поправьте меня где,что не так.

Puppeteer_v2.0_Auto.mq435 скач.

#45

Доброго дня, очень нужен не компелированный и не редактированный (формата mql) индикатор кукловод. Если не сложно выложите. Заранее спасибо!

Страница 2 из 2

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025