Как кодировать? - страница 341

 

Может ли кто-нибудь быть достаточно добрым, чтобы помочь мне решить эту проблему:

Есть проблема с кодом, который я прикрепил ниже этого сообщения..., он всегда дает сигнал в начале формирования свечи!

Это приводит к тому, что я поздно вхожу в торговлю, особенно на старших таймфреймах. Не могли бы вы помочь нам, чтобы Iny давал сигнал только тогда, когда текущий ценовой мост MA либо вверх для покупки, либо вниз для продажи, вместо того, чтобы ждать начала другой свечи.

Спасибо Прикрепленные файлы

Файлы:
smacd.mq4  4 kb
 

Привет, Младен, знаете ли вы, что я могу использовать для запуска критериев открытия сделки?

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

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

Я думаю использовать iClose, но не представляю, как это реализовать. Буду признателен за помощь.

Спасибо.

Райан

 
tkuan77:
Привет, Младен, не знаете ли вы, что я могу использовать для запуска критериев открытия сделки?

Я хочу знать, как я могу инициировать сделку, если свеча закрывается выше или ниже скользящей средней линии на 10 пунктов.

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

Я думаю использовать iClose, но не представляю, как это реализовать. Буду признателен за помощь.

Спасибо.

Райан

Привет, Младен,

Я сделал код, он вроде бы работает, однако, торговля иногда не срабатывает, когда критерии выполнены, и я не знаю, как это сделать дальше.

//+------------------------------------------------------------------+

//---- входные параметры

extern double TakeProfit = 250.0;

extern double Lots = 0.1;

extern double StopLoss = 200.0;

//+------------------------------------------------------------------+

//| функция инициализации эксперта |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| функция деинициализации эксперта | |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| функция запуска эксперта |

//+------------------------------------------------------------------+

double pBid, pAsk;

дата-время newbar;

int start()

{

//+------------------------------------------------------------------+

if(newbar==Time[0])return(0);

else newbar=Time[0];

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

double Up_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_HIGH,0);

double Dwn_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_LOW,0);

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//-- Триггерная торговля

//+------------------------------------------------------------------+

int ticket, total;

double CD_Close = iClose(NULL,0,1);

total = OrdersTotal(); // проверка общего количества сделок, открытых в данный момент

if(total < 2)

{

if (CD_Close >= Up_MA+50*Point)//Hour()==Entry_Hour_1st && Minute()==Entry_Minute_1st)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,

"Мой советник",Entry_magicNo_1st,0,Green);

return(0);

}

if (CD_Close <= Dwn_MA-50*Point)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,

"My EA",Entry_magicNo_1st,0,Red);

return(0);

}

return(0);

}

return(0);

}

//+------------------------------------------------------------------+

 
tkuan77:
Привет, Младен,

Я создал код, он вроде бы работает, однако, торговля иногда не срабатывает, когда критерии выполнены, и я не знаю, как действовать дальше.

//+------------------------------------------------------------------+

//---- входные параметры

extern double TakeProfit = 250.0;

extern double Lots = 0.1;

extern double StopLoss = 200.0;

//+------------------------------------------------------------------+

//| функция инициализации эксперта |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| функция деинициализации эксперта | |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| функция запуска эксперта |

//+------------------------------------------------------------------+

double pBid, pAsk;

дата-время newbar;

int start()

{

//+------------------------------------------------------------------+

if(newbar==Time[0])return(0);

else newbar=Time[0];

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

double Up_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_HIGH,0);

double Dwn_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_LOW,0);

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//-- Триггерная торговля

//+------------------------------------------------------------------+

int ticket, total;

double CD_Close = iClose(NULL,0,1);

total = OrdersTotal(); // проверка общего количества сделок, открытых в данный момент

if(total < 2)

{

if (CD_Close >= Up_MA+50*Point)//Hour()==Entry_Hour_1st && Minute()==Entry_Minute_1st)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,

"Мой советник",Entry_magicNo_1st,0,Green);

return(0);

}

if (CD_Close <= Dwn_MA-50*Point)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,

"My EA",Entry_magicNo_1st,0,Red);

return(0);

}

return(0);

}

return(0);

}

//+------------------------------------------------------------------+

Можете ли вы показать несколько случаев, когда это должно было вызвать сделку, но не вызвало?

 

Здравствуйте, Младен,

Приложите скриншот.

С уважением,

Райан

Файлы:
untitled.jpg  42 kb
 

Привет, Младен, может ли это быть какая-то ошибка в некоторых строках, которая вызывает эту ошибку?

С уважением,

 
tkuan77:
Привет Младен, может ли это быть какая-то ошибка в некоторых строках, которая вызывает эту ошибку? С уважением,

tkuan77

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

 
mladen:
tkuan77 В качестве первого шага проверьте журнал и вкладку экспертов в терминале, если там выводится какое-либо сообщение об ошибке

Привет, mladen, спасибо, проблема уже решена.

Однако, мой следующий вопрос заключается в том, как мне отсортировать сделки соответствующим образом?

Например:

Общее количество сделок в любой момент времени = 2

По 1 сделке для каждого набора критериев. Как сделать так, чтобы система не срабатывала более чем на 1 сделку для каждого конкретного набора, если критерии выполняются более одного раза?

Ниже приведены мои коды для справки:

total = OrdersTotal(); // проверка общего количества сделок, открытых в данный момент

if(total < 2)

{

if (Hour()==Entry_Hour_1st || Hour()==Entry_Hour_2nd)

{

//Если в данный момент не открыто ни одной сделки по этому критерию, проверьте, выполняются ли условия, если да, запускайте сделку, если нет, не запускайте сделку.

}

if (Hour()==Entry_Hour_3rd || Hour()==Entry_Hour_4th)

{

//Если в данный момент нет открытой сделки по этому критерию, проверьте, выполняются ли условия, если да, запустите сделку, если нет, не запускайте сделку.

}

}

Буду признателен за ваши советы. Спасибо.

С уважением,

 

Как именно должны обрабатываться ордера ECN-брокеров?

 
apprentice coder:
Как именно должны обрабатываться ордера ECN-брокеров?

ученик кодера

Разница лишь в том, что на ECN-брокере вы сначала открываете ордер с 0 полями sl и tp, а затем модифицируете ордер (если нужно), чтобы установить sl и tp, в то время как на "обычном" брокере вы можете установить sl и tp вместе с открытием ордера. Все остальное точно так же