Kann mir bitte jemand helfen? Ich weiß nicht, wo der Fehler liegt.
Code:
//+------------------------------------------------------------------+ //| Cempionat2012.mq5 | //| Victor Pavlyuk | //| | //+------------------------------------------------------------------+ #property copyright "Viktor Pawljuk" #Eigenschaft Version "1.03"
Eingabe int TakeProfit=538; Eingabe int StopLoss=1000; Eingabe int TradeTime=13; Eingabe int t1=7; Eingabe int t2=1; Eingabe int delta=70; Eingabe double lot=5; ...
Was sagt die Maschine, warum geht sie nicht durch?
Nimmt man den Verkauf weg, treten Probleme beim Kauf auf.
Ich fange gerade erst an,MQL5 zu lernen.
Ich danke Ihnen allen für Ihre Teilnahme.
Ich habe das Gefühl, dass der Expert Advisor von Pavel Smirnov bereits vergeben ist.
//+------------------------------------------------------------------+//| 20_200_pips_MQL5_v1.mq5 |//| Copyright 2010, Смирнов Павел |//| http://www.autoforex.ru |//+------------------------------------------------------------------+#property copyright "Copyright 2010, Смирнов Павел"#property link "http://www.autoforex.ru"#property version "1.00"//--- объявляем внешние переменные. //--- они будут доступны извне и их значения можно будет менять перед запуском тестераinputint TakeProfit=200;
inputint StopLoss=2000;
inputint TradeTime=18;
inputint t1=7;
inputint t2=2;
inputint delta=70;
inputdouble lot=0.1;
bool cantrade=true; // флаг для разрешения или запрета торговли.double Ask; // здесь будем хранить цену Ask для нового тика (так удобней)double Bid; // здесь будем хранить цену Bid для нового тика (так удобней)//+------------------------------------------------------------------+//| Функция открытия длинной (Long) позиции. |//| Указываем также значения переменных по умолчанию |//+------------------------------------------------------------------+int OpenLong(double volume=0.1,
int slippage=10,
string comment="EUR/USD 20 pips expert (Long)",
int magic=0)
{
//--- объявляем структуру типа MqlTradeRequest для формирования запросаMqlTradeRequest my_trade;
//--- в этой структуре будет ответ сервера на запрос.MqlTradeResult my_trade_result;
ZeroMemory(my_trade);
//---- далее заполняеем все НЕОБХОДИМЫЕ поля структуры запроса.//---- установить торговый ордер на немедленное совершение сделки с указанными параметрами (поставить рыночный ордер)
my_trade.action=TRADE_ACTION_DEAL;
//--- указываем в качестве валютной пары - текущую валютную пару (ту, на которой запущен советник)
my_trade.symbol=Symbol();
//--- размер лота
my_trade.volume=NormalizeDouble(volume,1);
//--- цена, при достижении которой ордер должен быть исполнен. //--- в нашем случае для TRADE_ACTION_DEAL это текущая цена и ее, согласно инструкции указывать не обязательно.
my_trade.price=NormalizeDouble(Ask,_Digits);
//--- стоплосс ордера (цена при которой следует закрыть убыточную сделку)
my_trade.sl=NormalizeDouble(Ask-StopLoss*_Point,_Digits);
//--- тейкпрофит (цена при которой следует закрыть прибыльную сделку)
my_trade.tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits);
//--- проскальзывание в пунктах (при тестировании особой роли не играет, т.к. проскальзывания не бывает на тестах)
my_trade.deviation=slippage;
//--- тип рыночного ордера (покупаем)
my_trade.type=ORDER_TYPE_BUY;
//--- указываем как исполнять ордер. (All Or Nothing - все или ничего) //--- сделка может быть совершена исключительно в указанном объеме и по цене равной или лучше указанной в ордере.
my_trade.type_filling=ORDER_FILLING_FOK;
//--- комментарий ордера
my_trade.comment=comment;
//--- магическое число ордера
my_trade.magic=magic;
//--- обнуляем код последней ошибки ResetLastError();
//--- отправляем запрос на открытие позиции. При этом проверяем успешно ли прошла отправка запросаif(OrderSend(my_trade,my_trade_result))
{
//--- если сервер принял ордер то смортрим на результат Print("Код результата операции - ",my_trade_result.retcode);
}
else
{
//--- сервер не принял ордер в нем есть ошибки, выводим их в журналPrint("Код результата операции - ",my_trade_result.retcode);
Print("Ошибка открытия ордера = ",GetLastError());
}
//--- выходим из функции открытия ордера return(0);
}
//+------------------------------------------------------------------+//| функция открытия короткой (Short) позиции. |//| Аналогична функции открытия длинной позиции. |//+------------------------------------------------------------------+int OpenShort(double volume=0.1,
int slippage=10,
string comment="EUR/USD 20 pips expert (Short)",
int magic=0)
{
MqlTradeRequest my_trade;
MqlTradeResult my_trade_result;
ZeroMemory(my_trade);
my_trade.action=TRADE_ACTION_DEAL;
my_trade.symbol=Symbol();
my_trade.volume=NormalizeDouble(volume,1);
my_trade.price=NormalizeDouble(Bid,_Digits);
my_trade.sl=NormalizeDouble(Bid+StopLoss*_Point,_Digits);
my_trade.tp=NormalizeDouble(Bid-TakeProfit*_Point,_Digits);
my_trade.deviation=slippage;
my_trade.type=ORDER_TYPE_SELL;
my_trade.type_filling=ORDER_FILLING_FOK;
my_trade.comment=comment;
my_trade.magic=magic;
ResetLastError();
if(OrderSend(my_trade,my_trade_result))
{
Print("Код результата операции - ",my_trade_result.retcode);
}
else
{
Print("Код результата операции - ",my_trade_result.retcode);
Print("Ошибка открытия ордера = ",GetLastError());
}
return(0);
}
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
return(0);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason){}
//+------------------------------------------------------------------+//| Expert OnTick function |//+------------------------------------------------------------------+voidOnTick()
{
//--- массив где будут храниться цены открытия баров (включая Open[t1] и Open[t2])double Open[];
//--- в этой структуре храним текущее время.MqlDateTime mqldt;
//--- обновляем данные о текущем времени.TimeCurrent(mqldt);
//--- переменная определяющая длину массива Open[].int len;
//---здесь будут храниться цены последнего пришедшего тикаMqlTick last_tick;
//--- заполняем структуру last_tick последними ценами текущего символа.SymbolInfoTick(_Symbol,last_tick);
//--- обновляем переменные Ask и Bid для дальнейшего использования
Ask=last_tick.ask;
Bid=last_tick.bid;
//---для удобства работы определяем массив Open[] как таймсерию.ArraySetAsSeries(Open,true);
//--- далее определим длину массива такую, чтобы обязательно вошли значения Open[t1] и Open[t2]//--- t1 и t2 - номера баров на которых сравниваются цены. //--- Берем большее из них и добавляем 1 (т.к. есть еще и нулевой бар)if(t1>=t2)len=t1+1;
else len=t2+1;
//--- заполняем массив Open[] актуальными значениямиCopyOpen(_Symbol,PERIOD_H1,0,len,Open);
//--- переключаем флаг cantarde на true, т.е. разрешим советнику снова открывать позицииif(((mqldt.hour)>TradeTime)) cantrade=true;
//--- проверяем возможность встать в позицию:if(!PositionSelect(_Symbol))// Если еще нет открытой позиции
{
//--- если пришло время торговатьif((mqldt.hour==TradeTime) && (cantrade))
{
//--- проверяем условие для открытия короткой сделки (продажи)if(Open[t1]>(Open[t2]+delta*_Point))
{
//--- открываем позицию Short
OpenShort(lot,10,"EUR/USD 20 pips expert (Short)",1234);
//--- переключаем флаг (запрещаем торговать), чтобы не открывал больше позиций до следующего дня
cantrade=false;
//--- выходимreturn;
}
//--- проверяем условие для открытия длинной позиции (покупки)if((Open[t1]+delta*_Point)<Open[t2])
{
//--- открываем позицию Long
OpenLong(lot,10,"EUR/USD 20 pips expert (Long)",1234);
//--- переключаем флаг (запрещаем торговать), чтобы не открывал больше позиций до следующего дня
cantrade=false;
//--- выходимreturn;
}
}
}
return;
}
//+------------------------------------------------------------------+
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Kann mir bitte jemand helfen? Ich weiß nicht, wo der Fehler liegt.
Code:
//+------------------------------------------------------------------+
//| Cempionat2012.mq5 |
//| Victor Pavlyuk |
//| |
//+------------------------------------------------------------------+
#property copyright "Viktor Pawljuk"
#Eigenschaft Version "1.03"
Eingabe int TakeProfit=538;
Eingabe int StopLoss=1000;
Eingabe int TradeTime=13;
Eingabe int t1=7;
Eingabe int t2=1;
Eingabe int delta=70;
Eingabe double lot=5;
...
dies funktioniert nur bei Verkauf
Arbeiten kaufen
Nimmt man den Verkauf weg, beginnen die Probleme mit dem Kauf.
Ich fange gerade erst an,MQL5 zu lernen.
Ich danke Ihnen allen für Ihre Teilnahme.
dies funktioniert nur bei Verkauf
Arbeiten kaufen
Nimmt man den Verkauf weg, treten Probleme beim Kauf auf.
Ich fange gerade erst an,MQL5 zu lernen.
Ich danke Ihnen allen für Ihre Teilnahme.
Ich habe das Gefühl, dass der Expert Advisor von Pavel Smirnov bereits vergeben ist.
Darüber sollte man keine Witze machen!
Der Code ist also offen.
Ich modifiziere es, um es an mein System anzupassen.
Während des Tests sehe ich Meldungen im Protokoll.
2012.09.21 20:07:11 Core 1 2012.09.18 13:00:00 fehlgeschlagen Sofortverkauf 5,00 EURUSD bei 1,30657 sl: 1,29657 tp: 1,31195 [Ungültige Anfrage]
Es fühlt sich so an, als ob Stadtrat Pavel Smirnov entführt worden wäre.
So viele Antworten, ich muss jede einzelne lesen und überprüfen - Gott bewahre, ich habe keine Zeit, was soll das mit den Kommentaren =)
So viele Antworten, dass man jede einzelne lesen und überprüfen und den Code testen muss - garantiert wird er das Zeitlimit nicht einhalten =)