Quelqu'un peut-il m'aider ? Je ne sais pas où se trouve l'erreur.
code :
//+------------------------------------------------------------------+ //| Cempionat2012.mq5 | //| Victor Pavlyuk | //| | //+------------------------------------------------------------------+ #property copyright "Victor Pavljuk" #property version "1.03"
entrée int TakeProfit=538 ; entrée int StopLoss=1000 ; entrée int TradeTime=13 ; entrée int t1=7 ; entrée int t2=1 ; entrée int delta=70 ; entrée double lot=5 ; ...
Enlevez la vente et les problèmes d'achat apparaissent.
Je commence tout juste à apprendreMQL5.
Merci à tous pour votre participation.
J'ai le sentiment que l'Expert Advisor de Pavel Smirnov a été pris.
//+------------------------------------------------------------------+//| 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;
}
//+------------------------------------------------------------------+
Tant de réponses, il faut lire et revoir chacune d'entre elles - tester le code - Dieu m'en préserve, je n'ai pas le temps, qu'est-ce que ça donne avec les commentaires =)
Il y a tellement de réponses, qu'il faut lire et revoir chacune d'entre elles et tester le code - il est certain qu'il ne respectera pas le délai imparti =)
Il ne pourra changer que le plus pour le moins et le moins pour le plus.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Quelqu'un peut-il m'aider ? Je ne sais pas où se trouve l'erreur.
code :
//+------------------------------------------------------------------+
//| Cempionat2012.mq5 |
//| Victor Pavlyuk |
//| |
//+------------------------------------------------------------------+
#property copyright "Victor Pavljuk"
#property version "1.03"
entrée int TakeProfit=538 ;
entrée int StopLoss=1000 ;
entrée int TradeTime=13 ;
entrée int t1=7 ;
entrée int t2=1 ;
entrée int delta=70 ;
entrée double lot=5 ;
...
cela ne fonctionne qu'avec la vente
acheter des œuvres
Enlevez la vente et les problèmes commencent avec l'achat.
Je commence tout juste à apprendreMQL5.
Merci à tous pour votre participation.
cela ne fonctionne qu'avec la vente
acheter des œuvres
Enlevez la vente et les problèmes d'achat apparaissent.
Je commence tout juste à apprendreMQL5.
Merci à tous pour votre participation.
J'ai le sentiment que l'Expert Advisor de Pavel Smirnov a été pris.
Vous ne devriez pas plaisanter avec ça !
donc le code est ouvert.
Je le modifie pour l'adapter à mon système
Pendant le test, je vois des messages dans le journal.
2012.09.21 20:07:11 Core 1 2012.09.18 13:00:00 failed instant sell 5.00 EURUSD at 1.30657 sl : 1.29657 tp : 1.31195 [Invalid request] (demande non valide)
On a l'impression que le conseiller Pavel Smirnov a été pris.
Tant de réponses, il faut lire et revoir chacune d'entre elles - tester le code - Dieu m'en préserve, je n'ai pas le temps, qu'est-ce que ça donne avec les commentaires =)
Il y a tellement de réponses, qu'il faut lire et revoir chacune d'entre elles et tester le code - il est certain qu'il ne respectera pas le délai imparti =)