[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 388

 
KostelloArtua:
2011.05.16 09:06:08 Expert Moving Average New-Svecha EURUSD,M30: loaded successfully
2011.05.16 09:04:21 Expert Moving Average New-Svecha EURUSD,M30: loaded successfully
2011.05.16 08:14:25 '81415': DataCenter connecting failed [6]


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


Если тики идут, пиктограмма советника "улыбается", советник должен совершать сделки (т.е. условия для этого возникают), но он их не совершает то надо отлаживать.

Расставьте по коду советника комаду Prinе(), особенно в тех местах, где производится сравнение и посмотрите что именно у Вас сравнивается. Возможно у Вас есть сравнение на равенствво переменных с типом double, и результат сравнения всегда ложь, в то время как Вы предполагаете, что переменные равны.

 

Всем добрый день.

Изучаю MQL4 около месяца. Написал простенький советник, который покупает или продает от изменения баров MACD (код могу кинуть вечером, если надо). Компилируется без проблем, на демо-счете в правом верхнем углу горит смайлик (разрешил советнику торговать в настройках). Тестер стратегий результаты по стратегии показывает (хоть и негативные, но это шаг к последующей доработке). А на демо-счете в MT4 советник сделок не открывает вообще. Мне кажется, что проблема не программе (иначе с чего тестер бы результаты давал?), а где-то в каких-то настройках.

Подскажите, в чем может быть дело?

 
Sersad:.

Подскажите, в чем может быть дело?


Сколько денег на счете и каким лотом заходите?
 
Roger:

Сколько денег на счете и каким лотом заходите?

На демо счете 10 000 USD, захожу 0.1 лотом (мини-лот).

Если вы про мани-менеджмент, то вряд ли дело в этом...

 
Sersad:

Всем добрый день.

Изучаю MQL4 около месяца. Написал простенький советник, который покупает или продает от изменения баров MACD (код могу кинуть вечером, если надо). Компилируется без проблем, на демо-счете в правом верхнем углу горит смайлик (разрешил советнику торговать в настройках). Тестер стратегий результаты по стратегии показывает (хоть и негативные, но это шаг к последующей доработке). А на демо-счете в MT4 советник сделок не открывает вообще. Мне кажется, что проблема не программе (иначе с чего тестер бы результаты давал?), а где-то в каких-то настройках.

Подскажите, в чем может быть дело?


Без кода сказать трудно. Вполне возможно, что советнеик написан под четырёхзнак, а демосчёт пятизнаковый. Сами понимаете, что если в настройках стоит, например, стоп-лосс ордера в 10 пунктов, то на пятизнаке это такое же расстояние, как 1 пункт на четырёхзнаке. Если при этом минимально-допустимое расстояние для установки стоп-приказов, скажем = 3 пункта, то на пятизнаке это будет уже не три, а тридцать пунктов. Понятно, что на пятизнаке сервер просто отвергнет команду установки ордера со стопом в 10 пунктов.

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

 


Извините,я тут чушь какую-то написал,если можно,покажите,в каком месте я совсем баранн.

Позы вроде совсем не открываются,ничего не происходит.

Убрал деление на ноль-все равно, и никакую ошибку в журнал не пишет.

//+------------------------------------------------------------------+
//| для лавин.mq4 |
//| Copyright © 2011, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern double stoploss=0; extern double takeprofit=20;extern int otstup=20; extern datetime expiration=0;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int tiket,tikett;double volume=0.1;int i=0,R1=0,R2=0,A=1 ;double price=PRICE_OPEN;
// R1=((PRICE_OPEN- stoploss*Point)*stoploss)/stoploss;R2=((PRICE_OPEN+ stoploss*Point)*stoploss)/stoploss;


int start()
{
//----

OrderSelect( tiket,SELECT_BY_TICKET, MODE_TRADES );
if(OrderSymbol()==Symbol()){
if (OrderMagicNumber( )==1000||OrderMagicNumber( )==2000 ){i=OrdersTotal() ;
if (i<2){
tiket= OrderSend( Symbol(), OP_BUYSTOP, volume*A, price +otstup*Point, Point* 3, R1, PRICE_OPEN+takeprofit*Point+otstup, "OP_BUYSTOP", 1000, expiration, Red);
Alert ("OP_BUYSTOP", GetLastError( ));
tikett= OrderSend( Symbol(), OP_SELLSTOP, volume*A, price -otstup*Point, Point* 3,R2, PRICE_OPEN-takeprofit*Point-otstup, "OP_SELLSTOP", 2000, expiration,C'0,128,255' );
Alert ("OP_SELLSTOP", GetLastError( ));
i=OrdersTotal() ; } } }

//----
return(0);
}
//+------------------------------------------------------------------+

То-есть,открываются типа два отложенных ордера,один выше цены на расстоянии otstup=20,другой ниже, стопа нет, и перед открытием проверки, нет ли ордеров этого советника и не больше ли двух.

 
alexr7:
Огромное спасибо за быстрый отклик!!!!!!!!!!!!!! Критерий - стандартный индикатор Bollinger Bands с параметрами: период 20, сдвиг 0, отклонение 2, Weighted Close(HLCC/4)!!!!!!!

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

Я же спрашивал у вас - каким образом вы определяете, что позиция находится на средней линии боллинджера?

 
alexr7:
Огромное спасибо за быстрый отклик!!!!!!!!!!!!!! Критерий - стандартный индикатор Bollinger Bands с параметрами: период 20, сдвиг 0, отклонение 2, Weighted Close(HLCC/4)!!!!!!!

Средняя линия Боллинджера - это iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_WEIGHTED, 1);
 
Dimka-novitsek:


Извините,я тут чушь какую-то написал,если можно,покажите,в каком месте я совсем баранн.

Позы вроде совсем не открываются,ничего не происходит.

Убрал деление на ноль-все равно, и никакую ошибку в журнал не пишет.

//+------------------------------------------------------------------+
//| для лавин.mq4 |
//| Copyright © 2011, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern double stoploss=0; extern double takeprofit=20;extern int otstup=20; extern datetime expiration=0;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int tiket,tikett;double volume=0.1;int i=0,R1=0,R2=0,A=1 ;double price=PRICE_OPEN;
// R1=((PRICE_OPEN- stoploss*Point)*stoploss)/stoploss;R2=((PRICE_OPEN+ stoploss*Point)*stoploss)/stoploss;


int start()
{
//----

OrderSelect( tiket,SELECT_BY_TICKET, MODE_TRADES );
if(OrderSymbol()==Symbol()){
if (OrderMagicNumber( )==1000||OrderMagicNumber( )==2000 ){i=OrdersTotal() ;
if (i<2){
tiket= OrderSend( Symbol(), OP_BUYSTOP, volume*A, price +otstup*Point, Point* 3, R1, PRICE_OPEN+takeprofit*Point+otstup, "OP_BUYSTOP", 1000, expiration, Red);
Alert ("OP_BUYSTOP", GetLastError( ));
tikett= OrderSend( Symbol(), OP_SELLSTOP, volume*A, price -otstup*Point, Point* 3,R2, PRICE_OPEN-takeprofit*Point-otstup, "OP_SELLSTOP", 2000, expiration,C'0,128,255' );
Alert ("OP_SELLSTOP", GetLastError( ));
i=OrdersTotal() ; } } }

//----
return(0);
}
//+------------------------------------------------------------------+

То-есть,открываются типа два отложенных ордера,один выше цены на расстоянии otstup=20,другой ниже, стопа нет, и перед открытием проверки, нет ли ордеров этого советника и не больше ли двух.

1) используйте SRC

2) у вас первой же командой идет OrderSelect. Кого вы собираетесь выбирать до установки ордеров?

 

При пуске советника ничего,это для проверки,чтоб потом при каждом тике новые рдера не открывалитсь

1) используйте SRC А,эт корень-спасибо!!

т.е. Если ордеров совсем нет,ну или меньше 2 то типа сразу ж открываются !

Причина обращения: