Нужна помощь в кодировании - страница 8

 

Джо

Что-то вроде этого:

if (MACD[0]>MACD[1]) Alert("Message to use for alert"):
Jovager:
Здравствуйте,

Как можно закодировать оповещение в индикаторе?

Например, как сделать алерт, когда MACD[0]>MACD[1]?

Спасибо за помощь.

Джо
 
mladen:
Jo

Что-то вроде этого:

if (MACD[0]>MACD[1]) Alert("Message to use for alert"):

Спасибо, Младен, но где?

У меня были сообщения :

Red -If_function not defined

Красный -Оповещение_Семиточка ожидается

------------------------------------------------------------------------------------------------------------------

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Silver

#property indicator_color2 Red

#property indicator_width1 2

//---- параметры индикатора

extern int FastEMA=12;

extern int SlowEMA=26;

extern int SignalSMA=9;

//---- буферы индикатора

double MacdBuffer[];

double SignalBuffer[];

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

//| Пользовательская функция инициализации индикатора |

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

int init()

{

//---- настройки рисования

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_LINE);

SetIndexDrawBegin(1,SignalSMA);

IndicatorDigits(Digits+1);

//---- отображение буферов индикаторов

SetIndexBuffer(0,MacdBuffer);

SetIndexBuffer(1,SignalBuffer);

//---- имя для DataWindow и метки подокна индикатора

IndicatorShortName("MACD("+FastEMA+", "+SlowEMA+", "+SignalSMA+")");

SetIndexLabel(0, "MACD");

SetIndexLabel(1, "Signal");

//---- инициализация выполнена

return(0);

}

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

//| Конвергенция/дивергенция скользящих средних |

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

int start()

{

int limit;

int counted_bars=IndicatorCounted();

//---- последний подсчитанный бар будет пересчитан

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- macd подсчитывается в 1-ом буфере

for(int i=0; i<limit; i++)

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- подсчет строк сигнала во 2-м буфере

for(i=0; i<limit; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);

//---- готово

return(0);

}

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

 

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

Jovager:
Спасибо Младен, но где?

У меня были сообщения :

Red -If_function not defined

Красный -Оповещение_Ожидается точка с запятой

------------------------------------------------------------------------------------------------------------------

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Silver

#property indicator_color2 Red

#property indicator_width1 2

//---- параметры индикатора

extern int FastEMA=12;

extern int SlowEMA=26;

extern int SignalSMA=9;

//---- буферы индикатора

double MacdBuffer[];

double SignalBuffer[];

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

//| Пользовательская функция инициализации индикатора |

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

int init()

{

//---- настройки рисования

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_LINE);

SetIndexDrawBegin(1,SignalSMA);

IndicatorDigits(Digits+1);

//---- отображение буферов индикаторов

SetIndexBuffer(0,MacdBuffer);

SetIndexBuffer(1,SignalBuffer);

//---- имя для DataWindow и метки подокна индикатора

IndicatorShortName("MACD("+FastEMA+", "+SlowEMA+", "+SignalSMA+")");

SetIndexLabel(0, "MACD");

SetIndexLabel(1, "Signal");

//---- инициализация выполнена

return(0);

}

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

//| Конвергенция/дивергенция скользящих средних |

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

int start()

{

int limit;

int counted_bars=IndicatorCounted();

//---- последний подсчитанный бар будет пересчитан

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- macd подсчитывается в 1-ом буфере

for(int i=0; i<limit; i++)

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- подсчет строк сигнала во 2-м буфере

for(i=0; i<limit; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);

//---- готово

return(0);

}

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

Pls fix Zero divide error when using timeframe as "0"

pivot_crazy.mq4Кто-нибудь может исправить ошибку деления нуля при использовании таймфрейма в качестве "0"?

Спасибо.

Файлы:
 

Попробуйте. Теперь все исправлено

privateer:
pivot_crazy.mq4Может кто-нибудь исправить ошибку нулевого деления при использовании таймфрейма как "0" Спасибо.
Файлы:
 

Спасибо, Младен работает как шарм

mladen:
Попробуйте. Теперь все исправлено

Спасибо, Младен работает как шарм

 

мне нужна помощь с этой ea у нее есть функция мартингейла но она не работает нормально например если позиция закрыта в убыток функция мартингейла должна умножать лоты последней позиции закрытой в убыток но там ошибка в коде которая заставляет мартингейл работать нормально вот eauniversalmacrossea.mq4

Файлы:
 

Этот способ открытия нового ордера после убытка не является мартингейлом + мартингейл работает с открытыми позициями

blondutrader:
мне нужна помощь с этой ea у нее есть функция мартингейла но она не работает нормально например если позиция закрыта в убыток функция мартингейла должна умножать лоты последней позиции закрытой в убыток но там ошибка в коде которая заставляет мартингейл работать нормально вот eauniversalmacrossea.mq4
 

Как я могу рассчитать размер моего лота, если я хочу торговать с каждой сделкой, т.е. 5% от моих денег?

 

sunshineh,

Попробуйте использовать эту функцию:

double getLots(string symbol, double Risk, double stopLossDistance)

{

RefreshRates();

double lots = 0;

double MinLots = NormalizeDouble(MarketInfo(symbol,MODE_MINLOT) ,2);

double MaxLots = NormalizeDouble(MarketInfo(symbol,MODE_MAXLOT) ,2);

double LotStep = NormalizeDouble(MarketInfo(symbol,MODE_LOTSTEP),2);

int LotDigit = 2;

if(MarketInfo(symbol,MODE_DIGITS)==3 || MarketInfo(symbol,MODE_DIGITS)==5) stopLossDistance *= 10.0;

//

//

//

//

//

if (LotStep==1) LotDigit=0;

if (LotStep==0.1) LotDigit=1;

if (LotStep==0.01) LotDigit=2;

if (Risk>0)

{

if (AccountBalance()>AccountFreeMargin())

lots = NormalizeDouble(AccountFreeMargin()*(Risk/100.0)/(stopLossDistance*MarketInfo(symbol,MODE_TICKVALUE)),LotDigit);

else lots = NormalizeDouble(AccountBalance() *(Risk/100.0)/(stopLossDistance*MarketInfo(symbol,MODE_TICKVALUE)),LotDigit);

}

//

//

//

//

//

lots = NormalizeDouble(NormalizeDouble(lots/LotStep,0)*LotStep,LotDigit);

lots = MathMax(MathMin(lots,MaxLots),MinLots);

return(lots);

}
sunshineh:
Как я могу рассчитать размер моего лота, если я хочу торговать с каждой сделкой, например, 5% от моих денег?
Причина обращения: