MqlTradeRequest構造 体は、使用前にクリアする必要があります。
GGG、このスレッドのトピックに共鳴するフレーズを頭の中に持っている人はどれくらいいるのだろう。:)
//+------------------------------------------------------------------+ //| Cempionat2012.mq5 | //| Victor Pavlyuk | //| | //+------------------------------------------------------------------+ #property copyright "Victor Pavljuk" #property version "1.03" input int TakeProfit=538; input int StopLoss=1000; input int TradeTime=13; input int t1=7; input int t2=1; input int delta=70; input double lot=5; bool cantrade=true; double Ask; double Bid; int OpenLong(double volume=5, int slippage=10000, string comment="", int magic=888) { MqlTradeRequest my_trade; MqlTradeResult my_trade_result; my_trade.action=TRADE_ACTION_DEAL; my_trade.symbol=Symbol(); my_trade.volume=NormalizeDouble(volume,1); 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; my_trade.type_filling=ORDER_FILLING_RETURN; 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); } int OpenShort(double volume=5, int slippage=10000, string comment="", int magic=888) { MqlTradeRequest my_trade; MqlTradeResult my_trade_result; my_trade.action=TRADE_ACTION_DEAL; my_trade.symbol=Symbol(); my_trade.volume=NormalizeDouble(volume,1); 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_SELL; my_trade.type_filling=ORDER_FILLING_RETURN; 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); } int OnInit() { return(0); } void OnDeinit(const int reason){} void OnTick() { double Open[]; MqlDateTime mqldt; TimeCurrent(mqldt); int len; MqlTick last_tick; SymbolInfoTick(_Symbol,last_tick); Ask=last_tick.ask; Bid=last_tick.bid; ArraySetAsSeries(Open,true); if(t1>=t2)len=t1+1; else len=t2+1; CopyOpen(_Symbol,PERIOD_M30,0,len,Open); if(((mqldt.hour)>TradeTime)) cantrade=true; if(!PositionSelect(_Symbol))// Если еще нет открытой позиции { if((mqldt.hour==TradeTime) && (cantrade)) { if(Open[t1]>(Open[t2]+delta*_Point)) { OpenShort(lot,10,"",888); cantrade=false; return; } if((Open[t1]+delta*_Point)<Open[t2]) { OpenLong(lot,10,"",888); cantrade=false; return; } } } return; } //+------------------------------------------------------------------+まずは、念のため
は、関数から構造を取り出すことができます。
やスリッページが大きすぎる、なぜそのような言い方をするのでしょうか?
そして、なぜブラケットがもう一組あるのでしょうか?
if(((mqldt.hour)>TradeTime))
タイプ別に開封機能を書き換えることが可能です。
void PosOpen(int trade, string symbol) {if (trade==0) return; double Price; ENUM_ORDER_TYPE Type; if (trade==1) {Type= ORDER_TYPE_BUY; Price=SymbolInfoDouble(symbol,SYMBOL_ASK);} else {Type = ORDER_TYPE_SELL; Price=SymbolInfoDouble(symbol,SYMBOL_BID);} mytrade.PositionOpen(symbol,Type,Lot,Price,0,0,"Open"); return; }
Heroix:
タイプ別に開封機能を書き換えることが可能です。
の場合は、少なくともどのライブラリから関数が取得されたかを指定する必要があります。
テスト中、ログにメッセージが表示されます。
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].
pavivas:
というところから始めるべきでした。
テスト中、ログにメッセージが表示されます。
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].
Vladon:
の場合は、少なくともどのライブラリから関数が取得されたかを指定する必要があります。
#include <TradeTrade.mqh>
ちなみに、デフォルトではターミナルフォルダに ありますよね?チャンプのEAには付かないはずですが?
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
- www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - Документация по MQL5
取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
どなたか助けてください。どこがエラーなのかわからない。
のコードで表示されます。
//+------------------------------------------------------------------+
| Cempionat2012.mq5||||。
//| ヴィクトル・パヴリウク
//| |
//+------------------------------------------------------------------+
#property copyright"Victor Pavljuk"
#property version "1.03"
入力 int TakeProfit=538;
入力 int StopLoss=1000;
入力 int TradeTime=13;
入力 int t1=7;
入力 int t2=1;
入力 int delta=70;
input double lot=5;
bool cantrade=true;
ダブルアスク
double Bid;
int OpenLong(double volume=5,
int slippage=10000,
文字列 comment=""です。
int magic=888)
{
MqlTradeRequest my_trade;
MqlTradeResult my_trade_result;
my_trade.action=TRADE_ACTION_DEAL;
my_trade.symbol=Symbol()。
my_trade.volume=NormalizeDouble(volume,1)となります。
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です。
my_trade.type_filling=ORDER_FILLING_RETURNです。
my_trade.comment=コメントです。
my_trade.magic=magic;
ResetLastError()。
if(OrderSend(my_trade,my_trade_result))です。
{
Print("取引結果コード - ",my_trade_result.retcode)
}
さもなくば
{
Print("操作結果コード - ",my_trade_result.retcode);
Print("オーダーオープンエラー = ",GetLastError());
}
return(0)です。
}
int OpenShort(double volume=5,
int slippage=10000,
文字列 comment=""です。
int magic=888)
{
MqlTradeRequest my_trade;
MqlTradeResult my_trade_result;
my_trade.action=TRADE_ACTION_DEAL;
my_trade.symbol=Symbol()。
my_trade.volume=NormalizeDouble(volume,1)となります。
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_SELLです。
my_trade.type_filling=ORDER_FILLING_RETURNです。
my_trade.comment=コメントです。
my_trade.magic=magic;
ResetLastError()。
if(OrderSend(my_trade,my_trade_result))です。
{
Print("取引結果コード - ",my_trade_result.retcode)
}
さもなくば
{
Print("操作結果コード - ",my_trade_result.retcode);
Print("オーダーオープンエラー = ",GetLastError());
}
return(0)です。
}
int OnInit()
{
return(0)です。
}
void OnDeinit(const int reason){}。
void OnTick()
{
double Open[];
MqlDateTime mqldt;
TimeCurrent(mqldt)。
int lenです。
MqlTick last_tick。
SymbolInfoTick(_Symbol,last_tick)。
Ask=last_tick.ask。
Bid=last_tick.bid。
ArraySetAsSeries(Open,true)です。
if(t1>=t2)len=t1+1;
else len=t2+1;
CopyOpen(_Symbol,PERIOD_M30,0,len,Open)を実行。
if(((mqldt.hour)>TradeTime))
if(!PositionSelect(_Symbol))// まだ開いていないポジションがある場合
{
if((mqldt.hour==TradeTime) && (cantrade))
{
if(Open[t1]>(Open[t2]+delta*_Point))とする。
{
OpenShort(lot,10,",888)。
cantrade=false。
を返します。
}
if((Open[t1]+delta*_Point)<Open[t2])とする。
{
OpenLong(lot,10,"",888);
{ return; }((Open[t1]+delta*_Point)=false.Open[t1]+delta*_Point)=false;
を返します。
}
}
}
を返します。
}
//+------------------------------------------------------------------+