MQL5で学び、共に書く - ページ 24 1...171819202122232425262728293031...46 新しいコメント Юрий Хомченко 2011.05.10 21:51 #231 この機能は何をするものなのか、誰の目にも明らかなのでしょうか。int OpenSell(double volume,int slippage=10,string comment="Open Short EUR/USD (Sell)",int magic0=102406){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(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_AON。my_trade.comment=コメントです。my_trade.magic=magic;ResetLastError()。if(OrderSend(my_trade,my_trade_result))です。{time_oc=TimeLocal()です。md=0とする。Print("操作結果 コード - ",my_trade_result.retcode);}さもなくば{Print("操作結果コード - ",my_trade_result.retcode);Print("オーダーオープンエラー = ",GetLastError());}return(0)です。}OnTick()プロシージャで...OpenSell(Lots,10,「EUR/USD (Sell)」,102406)。...一番最初にね。double StopLoss=250,TakeProfit=1400。extern double Lots = 0.1;なんでテスト結果に220ドルも入ってるんだ?<日付> <残高> <エクイティ> <マージンレベル 01,01,2010 0 :00:00 10000 10000 0 11,01,2010 2 :57:00 9779,29 9841,92 6827 15,01,2010 16:00:00 9829,8 9941,9 6857 22,01,2010 14:32:00 10124,1 10135,9 7167 26,01,2010 2 :14:00 10048,6 10048,6 0 26,01,2010 4 :06:00 10048,6 10038,4 7099 27,01,2010 21:12:00 10188,5 10188,5 0 29,01,2010 2 :16:00 10188,5 10308 7346 29,01,2010 7 :14:00 10188,5 10277,4 7324 04,02,2010 22:05:00 10418,63 10480,83 7592もし私が間違っていたら、鼻を突いてください。EAの全貌はお見せできません。購入時の機能は同様です...逆の注文でポジションをクローズする。 Юрий Хомченко 2011.05.10 21:57 #232 わかりました。大声で叫んでしまったただ、言葉を覚えるだけ。もし、気を悪くされた方がいらっしゃいましたら、申し訳ありません。働いて問題を探します。自分でもやっていることかもしれませんが、mql5を使って良いEAを作る方法をどうしても知りたいのです。とても良いシステムだと思いますが、.今のところ問題がありますね。mql4で20のExpert Advisorを問題なく使用できていますが。 Валерий 2011.05.11 10:56 #233 Khomtchenko:... このような不明な数字ではなく、当該期間の取引履歴 を示した方が良いのではないか。そうすれば、その損失がどこから来たのかが明確になるかもしれません。 Yedelkin 2011.05.11 18:46 #234 ファイル操作」の項目を少しずつ勉強するようになりました。MQL5でファイルを扱う方法について、チュートリアルがあるかどうかご存知ですか? Sergey Molotkov 2011.05.11 19:49 #235 あるモードの注文をすべて削除したいのですが、正しい方法はありますか?そのための関数として、check_ordersは特定のモードを持つ注文をチェックし、remove_slはそれらを削除する、という2つの関数を持っています。void remove_sl() { int counter01; ulong counter02; while(check_orders()==true) { for(counter01=0; counter01<OrdersTotal(); counter01++) { counter02=OrderGetTicket(counter01); if(OrderGetInteger(ORDER_MAGIC)!=magick) continue; remove_request.action=TRADE_ACTION_REMOVE; remove_request.order=counter02; if(OrderCheck(start_request,check_result)==true) OrderSend(start_request,trade_result); } } } bool check_orders() { int counter01; bool order_exist=false; for(counter01=0; counter01<OrdersTotal(); counter01++) { OrderGetTicket(counter01); if(OrderGetInteger(ORDER_MAGIC)==magick) { order_exist=true; break; } } return(order_exist); 問題は、EAのジャーナルで、このような行が表示されることです。2011.05.11 21:40:19 トレード '726238' : 注文のキャンセルに失敗 #4375237 0.00で買い 0.00000 [無効なリクエスト]である。 つまり、すでに送信された注文の削除依頼をトレードサーバーに重複して送信している。 Юрий Хомченко 2011.05.11 20:49 #236 ポジションのクローズとオープンに問題があるように思います。どういうわけか、0.1ロットのポジションを持つのではなく、実際には数ロットのポジションを持っているのです。どうやら1つのシンボルのポジションが重なり、そのボリュームが大きくなっているようです。上記のストップ値が大きい、テスト時に大きな差が出るという問題を説明するには、この方法しかないでしょう。オープントレードの存在を間違って分析していたり、トレールを間違って閉じていたりということです。これは、私がシンボルによってオープンポジションがあるかどうかを判断するために使用する手順です。int Total(){count=0とする。for (i=0; i<=PositionsTotal(); i++){if (PositionGetSymbol(i)==_Symbol) {count++;}.}return(count)です。}もちろん、この関数は0か1のどちらかを返します。私は、以下のようなエントリーで注文を開始しています。if (Total()<1){if (# some check on indicators#) OpenBuy(Lots,10, "EUR/USD (Buy)",102406);if (#some check on indicators#) OpenSell(Lots,10, "EUR/USD (Sell)",102406);}私は購入と売却を開いているように見えます。int OpenSell(double volume,int slippage=10,stringコメント="Open Short EUR/USD (Sell)",int magic0=102406){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(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_AON。my_trade.comment=コメントです。my_trade.magic=magic;ResetLastError()。if(OrderSend(my_trade,my_trade_result))です。{time_oc=TimeLocal()です。md=0とする。Print("操作結果 コード - ",my_trade_result.retcode);}さもなくば{Print("操作結果コード - ",my_trade_result.retcode);Print("オーダーオープンエラー = ",GetLastError());}return(0)です。}同じようにメイン手順でトレードをクローズしています。if (Total()>0) TryToClose()。TryToCloseはこのようなものです。int TryToClose(){for (i=0; i<=PositionsTotal(); i++){if (PositionGetSymbol(i)==_Symbol)とする。{if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)とする。if(# some indicator check#) OpenSell(Lots,10, "EUR/USD (Sell)",102406)if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)です。if(# some indicator check#) OpenBuy(Lots,10, "EUR/USD (Buy)",102406);}}return(0)です。}この指標は、買いポジションがあるはずなのに、売りポジションがあれば、買いを行うことをチェックするものです。間違えたところ。なぜポジションが肥大化するのか。 Learning and writing together Coding help Metatrader 5 coding questions Mykola Demko 2011.05.11 21:15 #237 Khomtchenko:SRCボタンでコードを挿入するБудет читабельнее MT4注文とMT5注文の違いをご存知ですか? Юрий Хомченко 2011.05.11 21:26 #238 mql4では、注文は取引か保留かのどちらかです。mql5では、注文は保留中の取引です。市場への参入とは、ポジションを開く ことです。注文がトリガーされると、ポジションが開設されます。1つのシンボルに対してポジションは1つしかなく、オーダーはいくつでも可能です。Спасибо за подсказку Юрий Хомченко 2011.05.11 21:59 #239 みんなにバカにされ続けている。私は頭が悪いのかもしれません。では、私の間違いを見つけて、訂正します。 Mykola Demko 2011.05.11 22:20 #240 Khomtchenko:なんだか、バカの一つ覚えのような気もするけど。私はバカかもしれません。では、私の間違いを見つけて、それを訂正できるようにしてください。 何もほのめかしているわけではなく、ただ駆け足で「何が一番多いですか」と聞いただけなので、あなたのレベルがわかりません。私はここに長くいて、すでに多くの人について意見を形成しています(みんなそれなりに強いです)、私はまだあなたのことを知らないので、何もほのめかすつもりはありません。戦略の全体像が見えない。ポジションの取り方からして、戦略は多通貨ですね。しかし、ツールは1つしか規定していないのですね。ツールは1つなのに、なぜポジションを循環させるのでしょうか?楽器がわかっていれば、すべてのポジションに目を通して探す必要はなく、この機能を使うだけでいいのです。bool PositionSelect( string symbol // имя инструмента ); 1...171819202122232425262728293031...46 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
この機能は何をするものなのか、誰の目にも明らかなのでしょうか。
int OpenSell(double volume,int slippage=10,string comment="Open Short EUR/USD (Sell)",int magic0=102406)
{
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(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_AON。
my_trade.comment=コメントです。
my_trade.magic=magic;
ResetLastError()。
if(OrderSend(my_trade,my_trade_result))です。
{
time_oc=TimeLocal()です。
md=0とする。
Print("操作結果 コード - ",my_trade_result.retcode);
}
さもなくば
{
Print("操作結果コード - ",my_trade_result.retcode);
Print("オーダーオープンエラー = ",GetLastError());
}
return(0)です。
}
OnTick()プロシージャで
...
OpenSell(Lots,10,「EUR/USD (Sell)」,102406)。
...
一番最初にね。
double StopLoss=250,
TakeProfit=1400。
extern double Lots = 0.1;
なんでテスト結果に220ドルも入ってるんだ?
<日付> <残高> <エクイティ> <マージンレベル
01,01,2010 0 :00:00 10000 10000 0
11,01,2010 2 :57:00 9779,29 9841,92 6827
15,01,2010 16:00:00 9829,8 9941,9 6857
22,01,2010 14:32:00 10124,1 10135,9 7167
26,01,2010 2 :14:00 10048,6 10048,6 0
26,01,2010 4 :06:00 10048,6 10038,4 7099
27,01,2010 21:12:00 10188,5 10188,5 0
29,01,2010 2 :16:00 10188,5 10308 7346
29,01,2010 7 :14:00 10188,5 10277,4 7324
04,02,2010 22:05:00 10418,63 10480,83 7592
もし私が間違っていたら、鼻を突いてください。
EAの全貌はお見せできません。購入時の機能は同様です...
逆の注文でポジションをクローズする。
わかりました。大声で叫んでしまったただ、言葉を覚えるだけ。もし、気を悪くされた方がいらっしゃいましたら、申し訳ありません。働いて問題を探します。自分でもやっていることかもしれませんが、mql5を使って良いEAを作る方法をどうしても知りたいのです。とても良いシステムだと思いますが、.今のところ問題がありますね。
mql4で20のExpert Advisorを問題なく使用できていますが。
...
ファイル操作」の項目を少しずつ勉強するようになりました。MQL5でファイルを扱う方法について、チュートリアルがあるかどうかご存知ですか?
あるモードの注文をすべて削除したいのですが、正しい方法はありますか?
そのための関数として、check_ordersは特定のモードを持つ注文をチェックし、remove_slはそれらを削除する、という2つの関数を持っています。
問題は、EAのジャーナルで、このような行が表示されることです。
2011.05.11 21:40:19 トレード '726238' : 注文のキャンセルに失敗 #4375237 0.00で買い 0.00000 [無効なリクエスト]である。
つまり、すでに送信された注文の削除依頼をトレードサーバーに重複して送信している。
ポジションのクローズとオープンに問題があるように思います。
どういうわけか、0.1ロットのポジションを持つのではなく、実際には数ロットのポジションを持っているのです。どうやら1つのシンボルのポジションが重なり、そのボリュームが大きくなっているようです。上記のストップ値が大きい、テスト時に大きな差が出るという問題を説明するには、この方法しかないでしょう。オープントレードの存在を間違って分析していたり、トレールを間違って閉じていたりということです。
これは、私がシンボルによってオープンポジションがあるかどうかを判断するために使用する手順です。
int Total()
{
count=0とする。
for (i=0; i<=PositionsTotal(); i++)
{
if (PositionGetSymbol(i)==_Symbol) {count++;}.
}
return(count)です。
}
もちろん、この関数は0か1のどちらかを返します。
私は、以下のようなエントリーで注文を開始しています。
if (Total()<1)
{
if (# some check on indicators#) OpenBuy(Lots,10, "EUR/USD (Buy)",102406);
if (#some check on indicators#) OpenSell(Lots,10, "EUR/USD (Sell)",102406);
}
私は購入と売却を開いているように見えます。
int OpenSell(double volume,int slippage=10,stringコメント="Open Short EUR/USD (Sell)",int magic0=102406)
{
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(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_AON。
my_trade.comment=コメントです。
my_trade.magic=magic;
ResetLastError()。
if(OrderSend(my_trade,my_trade_result))です。
{
time_oc=TimeLocal()です。
md=0とする。
Print("操作結果 コード - ",my_trade_result.retcode);
}
さもなくば
{
Print("操作結果コード - ",my_trade_result.retcode);
Print("オーダーオープンエラー = ",GetLastError());
}
return(0)です。
}
同じようにメイン手順でトレードをクローズしています。
if (Total()>0) TryToClose()。
TryToCloseはこのようなものです。
}
この指標は、買いポジションがあるはずなのに、売りポジションがあれば、買いを行うことをチェックするものです。
間違えたところ。なぜポジションが肥大化するのか。
SRCボタンでコードを挿入する
MT4注文とMT5注文の違いをご存知ですか?mql4では、注文は取引か保留かのどちらかです。
mql5では、注文は保留中の取引です。市場への参入とは、ポジションを開く ことです。注文がトリガーされると、ポジションが開設されます。1つのシンボルに対してポジションは1つしかなく、オーダーはいくつでも可能です。
みんなにバカにされ続けている。私は頭が悪いのかもしれません。では、私の間違いを見つけて、訂正します。
なんだか、バカの一つ覚えのような気もするけど。私はバカかもしれません。では、私の間違いを見つけて、それを訂正できるようにしてください。
何もほのめかしているわけではなく、ただ駆け足で「何が一番多いですか」と聞いただけなので、あなたのレベルがわかりません。
私はここに長くいて、すでに多くの人について意見を形成しています(みんなそれなりに強いです)、私はまだあなたのことを知らないので、何もほのめかすつもりはありません。
戦略の全体像が見えない。ポジションの取り方からして、戦略は多通貨ですね。
しかし、ツールは1つしか規定していないのですね。ツールは1つなのに、なぜポジションを循環させるのでしょうか?
楽器がわかっていれば、すべてのポジションに目を通して探す必要はなく、この機能を使うだけでいいのです。