Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Математическое ожидание Помогите пожалуйста
Здравствуйте
Похоже, я сам себя запутал.
Я пытаюсь использовать формулу ожидания в своем советнике. У меня есть формула 1-avgwin/avgloss*системная точность+1 и она отлично работает, но я хотел бы знать, как рассчитать и отобразить разницу между ордером и StopLoss, например.
OP_SELLSTOP 1.63406
StopLoss 1.63603
1.63406 - 1.63603 = -0.00197 Я думаю, что это должно быть положительное число.
Ожидание 1,45
Поэтому для расчета TakeProfit -0.00197 * 1.45 = -0.00285
Поместите TP на OP_SELLSTOP 1.63406 - 1.63121
и наоборот для длинной позиции
Это все часть этой темы https://www.mql5.com/en/forum/178980, и если вы посмотрите на лист excel, то увидите, что я почти у цели.
Любая помощь была бы замечательной.
Спасибо Бено
Здравствуйте
Похоже, я в какой-то степени запутался.
Я пытаюсь использовать формулу ожидания в моем советнике У меня есть формула 1-avgwin/avgloss*системная точность+1 и она отлично работает, но я хотел бы знать, как вычислить и отобразить разницу между ордером и StopLoss, например.
OP_SELLSTOP 1.63406
StopLoss 1.63603
1.63406 - 1.63603 = -0.00197 Я думаю, что это должно быть положительное число.
Ожидание 1,45
Поэтому для расчета TakeProfit -0.00197 * 1.45 = -0.00285
Поместите TP на OP_SELLSTOP 1.63406 - 1.63121
и наоборот для длинной позиции
Это все часть этой темы https://www.mql5.com/en/forum/178980, и если вы посмотрите на лист excel, то увидите, что я почти у цели.
Любая помощь была бы очень кстати.
Будь здоров, БеноСамый простой способ - не думать об этом и использовать:
double MathAbs(double value)
MathAbs - Документация по MQL4
С уважением,
Привет CRN
Спасибо за ответ, вот что я пробовал.
Я думаю, что это правильно, но просто печатает PipSL 15769.68328362
1 2011.01.04 00:00 sell stop 1 0.01 1.54279 0.00000 0.00000 0.00 10000.00
2 2011.01.07 08:20 sell 1 0.01 1.54279 0.00000 0.00000 0.00 10000.00
3 2011.01.07 08:20 изменить 1 0.01 1.54279 1.57712 0.00000 0.00 10000.00
4 2011.01.11 23:40 закрытие по стопу 1 0.01 1.56045 1.57712 0.00000 -17.66 9982.34
и мне нужна фактическая разница между продажей и SL
Кто-нибудь, пожалуйста, помогите мне.
Здравствуйте и с Рождеством всех.
Во-первых, я новичок на этом форуме. У меня проблема с советником, и может ли кто-нибудь решить ее для меня? Проблема в том, как установить этот советник для реальной торговли, и советник просто серый цвет на моей живой торговли.
Вот вложение :
spielershedge_library.mqh
spielershedge_pipstar.mq4
spielershedge_ea_v2.8.1.ex4
spielershedge_divergence_v5.1.ex4
-хотя это была старая ea, но я думаю, что мы можем поделиться и взять что-то, что будет полезно для всех нас.
-я только что нашел это из системы Хедж-трейдинга Spieler, полученной из торговли фьючерсными спредами - Страница 193 @ Forex Factory ( SpielersHedge PipStar.mq4 ) и остальное из системы Хедж-трейдинга Spieler, полученной из торговли фьючерсными спредами - Страница 87 @ Forex Factory.
-Извините за мой плохой английский.
P/S : Я очень признателен всем вам за уроки, руководства, комментарии и критику для моего совершенствования. Я верю, что чем больше мы отдаем наши знания, тем больше мы получаем знаний.
Привет CRN
Спасибо за ответ, вот что я пробовал.
Я думаю, что это правильно, но просто печатает PipSL 15769.68328362
1 2011.01.04 00:00 sell stop 1 0.01 1.54279 0.00000 0.00000 0.00 10000.00
2 2011.01.07 08:20 sell 1 0.01 1.54279 0.00000 0.00000 0.00 10000.00
3 2011.01.07 08:20 изменить 1 0.01 1.54279 1.57712 0.00000 0.00 10000.00
4 2011.01.11 23:40 закрыть по стопу 1 0.01 1.56045 1.57712 0.00000 -17.66 9982.34
и мне требуется фактическая разница между продажей и SLЕсли вам нужно фактическое использование iClose(0,0,0)-OrderStopLoss().
но сначала выберите нужный ордер с помощью OrderSelect;
С уважением,
Временной фильтр с помощью CloseAll Помогите пожалуйста
Gidday
У меня есть временной фильтр, работающий на советнике, но я пытался прикрепить к нему closeall, чтобы если время равно времени закрытия, то closeall открывал позиции.
extern int gmtshift=1; // gmt offset of the broker
extern bool generalfilter=false; // enable time filter
extern int starthour=7; // start hour to trade after this hour
extern int startminutes=0; // minutes of the start hour
extern int endhour=21; // stop to trade after this hour
extern int endminutes=0; // minutes of the start hour
extern bool tradesunday=true; // trade on sunday
extern bool fridayfilter=false; // enable special time filter on friday
extern int fridayhour=21; // stop to trade after this hour
extern int fridayminutes=0; // minutes of the friday hour[/CODE]
[CODE]void start() {
if(generalfilter){
nstarthour=starthour+(gmtshift);if(nstarthour>23)nstarthour=nstarthour-24;
if(nstarthour<10)istarthour="0"+nstarthour;
if(nstarthour>9)istarthour=nstarthour;
if(startminutes<10)istartminutes="0"+startminutes;
if(startminutes>9)istartminutes=startminutes;
tstart=StrToTime(istarthour+":"+istartminutes);
nendhour=endhour+(gmtshift);if(nendhour>23)nendhour=nendhour-24;
if(endhour<10)iendhour="0"+nendhour;
if(endhour>9)iendhour=nendhour;
if(endminutes<10)iendminutes="0"+endminutes;
if(endminutes>9)iendminutes=endminutes;
tend=StrToTime(iendhour+":"+iendminutes);
}
if(fridayfilter){
nfridayhour=fridayhour+(gmtshift);if(nfridayhour>23)nfridayhour=nfridayhour-24;
if(nfridayhour<10)ifridayhour="0"+nfridayhour;
if(nfridayhour>9)ifridayhour=nfridayhour;
if(fridayminutes<10)ifridayminutes="0"+fridayminutes;
if(fridayminutes>9)ifridayminutes=fridayminutes;
tfriday=StrToTime(ifridayhour+":"+ifridayminutes);
}
if((generalfilter && (nstarthour<nendhour && TimeCurrent()tend) || (nstarthour>nendhour && TimeCurrent()tend))
|| (tradesunday==false && DayOfWeek()==0) || (fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday))return(0);
if (TimeCurrent() >= tend) {
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==TradeSymbol) {
if (OrderType()==OP_BUY) {
pBid=MarketInfo(OrderSymbol(), MODE_BID);
OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Yellow);
}
if (OrderType()==OP_SELL) {
pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange);
}
}
}
}
}пожалуйста, помогите мне
extern int BuyStopTakeProfit=10;
extern int BuyStopSL=1000;
как закодировать
если BuyStopTakeProfit попал в TakeProfit, удалить все отложенные ордера
пожалуйста, кто-нибудь может помочь
Помогите!!!! Please!!!! iCustom функция
Помогите,
Я перепробовал все, чтобы заставить мой C_EA_rev6.mq4 вызывать любой буфер из пользовательского индикатора VSATEXTSIGNALS.mq4. Я использовал функцию iCustom, но она всегда возвращает 2147483647, что, как я понимаю, является кодом ошибки. Пользовательский индикатор помещает на график текстовые сигналы, основанные на технике анализа разброса объемов. Пользовательский индикатор работает нормально, когда я прикрепляю его к графику. Я потратил на это бесчисленное количество часов и перепробовал все известные мне комбинации. Любая помощь будет очень признательна. Также у меня есть вопрос, можно ли использовать функцию iCustom для пользовательского индикатора, который вызывает скрипт или файл .dll?
Код индикатора и советника смотрите во вложениях.
Спасибо,
cmfxtrader
Помогите,
Я перепробовал все, чтобы заставить мой C_EA_rev6.mq4 вызвать любой буфер из пользовательского индикатора VSATEXTSIGNALS.mq4. Я использовал функцию iCustom, но она всегда возвращает 2147483647, что, как я понимаю, является кодом ошибки. Пользовательский индикатор помещает на график текстовые сигналы, основанные на технике анализа разброса объемов. Пользовательский индикатор работает нормально, когда я прикрепляю его к графику. Я потратил на это бесчисленное количество часов и перепробовал все известные мне комбинации. Любая помощь будет очень признательна. Также у меня есть вопрос, можно ли использовать функцию iCustom на пользовательском индикаторе, который вызывает скрипт или файл .dll?
Код индикатора и советника смотрите во вложениях.
Спасибо,
cmfxtraderПривет,
Дело в том, что пока вы пытаетесь прочитать буфер из индикатора, он выводит текстовые сообщения, которые не являются буферами. Поэтому вы получаете значение 2147483647, которое является EMPTY_VALUE, а не ошибкой.
В любом случае, я предполагаю, что вы хотите автоматизировать сигналы от этого индикатора. Для этого есть простое решение. Индикатор объявлен как имеющий 7 буферов (#property indicator_buffers 7), но он использует только 5. Индикаторы могут использовать максимум 8 буферов. Это означает, что вы можете объявить еще один дополнительный буфер только для ваших вычислений и заполнить его сообщениями, которые идентифицируются. Номера сообщений вы найдете в функции TextOutput. Просто добавьте номера в буфер в зависимости от того, какое сообщение отображается. Например, если текст : "UPTHRUST / Weakness_", то добавьте в буфер 1, если сообщение PSEUDO UPTHRUST / Weakness_, то добавьте 4 и так далее. Индекс буфера будет таким же, как и значение переменной "i".
Что касается второго вопроса: вы всегда можете использовать функцию iCustom для индикатора (не скрипта) и читать значения, если они заполняют буферы, объявленные в индикаторе. Например, если это будет индикатор, который рисует линии, то вы можете прочитать значения линий - потому что для рисования чего-либо (кроме меток) индикатор должен заполнить буферы. Если же индикатор будет создавать графические объекты (как тот, что вы прикрепили), то вам придется: а) читать значения из графических объектов, или б) перекодировать индикатор (как я предложил выше). Не имеет значения, использует ли индикатор DLL или нет - ему просто нужно правильно заполнить буфер, чтобы прочитать свои значения из функции iCustom.
Gidday
У меня есть временной фильтр, работающий на советнике, но я пытался прикрепить к нему closeall, чтобы если время равно времени закрытия, то closeall открывал позиции.
extern int gmtshift=1; // gmt offset of the broker
extern bool generalfilter=false; // enable time filter
extern int starthour=7; // start hour to trade after this hour
extern int startminutes=0; // minutes of the start hour
extern int endhour=21; // stop to trade after this hour
extern int endminutes=0; // minutes of the start hour
extern bool tradesunday=true; // trade on sunday
extern bool fridayfilter=false; // enable special time filter on friday
extern int fridayhour=21; // stop to trade after this hour
extern int fridayminutes=0; // minutes of the friday hour[/CODE]
[CODE]void start() {
if(generalfilter){
nstarthour=starthour+(gmtshift);if(nstarthour>23)nstarthour=nstarthour-24;
if(nstarthour<10)istarthour="0"+nstarthour;
if(nstarthour>9)istarthour=nstarthour;
if(startminutes<10)istartminutes="0"+startminutes;
if(startminutes>9)istartminutes=startminutes;
tstart=StrToTime(istarthour+":"+istartminutes);
nendhour=endhour+(gmtshift);if(nendhour>23)nendhour=nendhour-24;
if(endhour<10)iendhour="0"+nendhour;
if(endhour>9)iendhour=nendhour;
if(endminutes<10)iendminutes="0"+endminutes;
if(endminutes>9)iendminutes=endminutes;
tend=StrToTime(iendhour+":"+iendminutes);
}
if(fridayfilter){
nfridayhour=fridayhour+(gmtshift);if(nfridayhour>23)nfridayhour=nfridayhour-24;
if(nfridayhour<10)ifridayhour="0"+nfridayhour;
if(nfridayhour>9)ifridayhour=nfridayhour;
if(fridayminutes<10)ifridayminutes="0"+fridayminutes;
if(fridayminutes>9)ifridayminutes=fridayminutes;
tfriday=StrToTime(ifridayhour+":"+ifridayminutes);
}
if((generalfilter && (nstarthour<nendhour && TimeCurrent()tend) || (nstarthour>nendhour && TimeCurrent()tend))
|| (tradesunday==false && DayOfWeek()==0) || (fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday))return(0);
if (TimeCurrent() >= tend) {
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==TradeSymbol) {
if (OrderType()==OP_BUY) {
pBid=MarketInfo(OrderSymbol(), MODE_BID);
OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Yellow);
}
if (OrderType()==OP_SELL) {
pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange);
}
}
}
}
}попробуйте проверить эту часть:
if((generalfilter && (nstarthour<nendhour && TimeCurrent()tend) || (nstarthour>nendhour && TimeCurrent()tend)))
|| (tradesunday==false && DayOfWeek()==0) || (fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday))return(0);
Другая часть кода может быть проще, но она должна работать.
Однако, если вы выйдете из скрипта до закрытия всей части, то он не будет работать, и похоже, что скрипт так и делает.
Посмотрите, например, на эту часть:
(fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday) return(0);
На английском это означает: если сегодня пятница, и фильтр friday включен, и была пройдена метка времени (например, время окончания 18.00, а сейчас 18.01), то return(0).
Должно быть так: если сегодня пятница, и фильтр пятницы включен, и временная метка была пройдена CLOSE ALL и (например, время окончания 18.00 и 18.01), то return(0).