Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Джо
Что-то вроде этого:
Здравствуйте,
Как можно закодировать оповещение в индикаторе?
Например, как сделать алерт, когда MACD[0]>MACD[1]?
Спасибо за помощь.
ДжоJo
Что-то вроде этого:
Спасибо, Младен, но где?
У меня были сообщения :
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);
}
//+--------------------------------------------
Прямо перед последним возвратом в вашем коде (таким образом вы гарантируете, что он будет выполнен только тогда, когда вся остальная обработка будет завершена).
Спасибо Младен, но где?
У меня были сообщения :
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"?
Спасибо.
Попробуйте. Теперь все исправлено
pivot_crazy.mq4Может кто-нибудь исправить ошибку нулевого деления при использовании таймфрейма как "0" Спасибо.
Спасибо, Младен работает как шарм
Попробуйте. Теперь все исправлено
Спасибо, Младен работает как шарм
мне нужна помощь с этой ea у нее есть функция мартингейла но она не работает нормально например если позиция закрыта в убыток функция мартингейла должна умножать лоты последней позиции закрытой в убыток но там ошибка в коде которая заставляет мартингейл работать нормально вот eauniversalmacrossea.mq4
Этот способ открытия нового ордера после убытка не является мартингейлом + мартингейл работает с открытыми позициями
мне нужна помощь с этой ea у нее есть функция мартингейла но она не работает нормально например если позиция закрыта в убыток функция мартингейла должна умножать лоты последней позиции закрытой в убыток но там ошибка в коде которая заставляет мартингейл работать нормально вот eauniversalmacrossea.mq4
Как я могу рассчитать размер моего лота, если я хочу торговать с каждой сделкой, т.е. 5% от моих денег?
sunshineh,
Попробуйте использовать эту функцию:
{
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);
}Как я могу рассчитать размер моего лота, если я хочу торговать с каждой сделкой, например, 5% от моих денег?