MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1598 1...159115921593159415951596159715981599160016011602160316041605...1953 新しいコメント Igor Makanu 2021.08.24 07:54 #15971 Maxim Kuznetsov:ただし、端末が十分な履歴を持つこと、またそれを保証するものではありません。 上記の例では、履歴への言及はありません。 ので、OrderSelect()の結果が真であることが保証されます。 UPD: 4のOrderSelectは 非常によく機能します。一度テストしましたが、成行注文の場合、注文のプロパティにアクセスする時間が......。本当に毎秒何百万回なのか、調べたくありません。モデレーターのアルテムと議論していたような気がしますが、「一長一短」と言いますし、気に入ったのなら、そのままにしておきましょう。 законопослушный гражданин 2021.08.24 09:56 #15972 こんにちは、各取引のドローダウンのデータが欲しいというニーズがあります。 このような統計情報を収集し、レポートの形で出力するスクリプトに出会える方はいらっしゃいますか? ありがとうございました。 Maxim Kuznetsov 2021.08.24 10:12 #15973 законопослушный гражданин:こんにちは、各取引のドローダウンのデータが欲しいというニーズがあります。このような統計情報を収集し、レポートの形で出力するスクリプトに出会える方はいらっしゃいますか? しゃい for(int i=OrdersTotal()-1;i>=0;i--) { if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue; double prosad=DBL_MIN; if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue; for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) { double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() ); delta /= MarketInfo(OrderSymbol(),MODE_POINT); if (delta>prosad) prosad=delta; } PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE); } 手書き」であり、未検証、バグだらけです :-) 自分のニーズに合わせて調整し、使用してください。 Any questions from newcomers コーディングのヘルプ アスク! законопослушный гражданин 2021.08.24 10:22 #15974 Maxim Kuznetsov: for(int i=OrdersTotal()-1;i>=0;i--) { if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue; double prosad=DBL_MIN; if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue; for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) { double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() ); delta /= MarketInfo(OrderSymbol(),MODE_POINT); if (delta>prosad) prosad=delta; } PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE); } 手書きで書いたので、チェックはしていませんし、間違いだらけです :-) あなたのニーズと使用に合わせて調整してください。 ありがとうございます。 Janis Ozols 2021.08.24 10:27 #15975 @Igor Makanu さん、ターミナルでのソート順についてのご回答、どうもありがとうございました。構造体の配列として保存して、自分でソートすることになるんでしょうね。というのも、このような動作を毎ティック行うことで、パフォーマンスに顕著な悪影響が出るのではと危惧したからです。 Alexey Viktorov 2021.08.24 11:10 #15976 Janis Ozols: @Igor Makanu さん、ターミナルでのソート順についてのご回答、どうもありがとうございました。構造体の配列として保存して、自分でソートすることになるんでしょうね。というのも、このような動作が毎ティック行われることで、パフォーマンスに顕著な悪影響が出るのではと危惧したからです。 では、なぜダニごとにソートするのでしょうか?エントリーの数が変わったり、リストが完全に変わったりしたときだけ十分...。 wasol 2021.08.24 11:25 #15977 こんにちは ナビゲーターからダウンロードしたインジケーターがチャートにドラッグされないのですが、どうしてでしょうか?カタログに載っています。 ファイル: image002.jpg 38 kb wasol 2021.08.24 12:09 #15978 午後マーケットプレイスから取引端末への 指標ツールの自動読み込みが行われない場合、何が問題なのでしょうか? Artyom Trishkin 2021.08.24 15:10 #15979 Igor Makanu:上記の例では、歴史への言及はありません。ので、OrderSelect()の結果が真であることが保証されます。UPD: 4のOrderSelectは 非常にうまく機能しており、一度テストしていました - 成行注文の場合、注文のプロパティにアクセスする時間....本当に毎秒何百万回なのか、調べたくありません。モデレーターのアルテムと議論していたような気がしますが、「一長一短」と言いますし、気に入ったのなら、そのままにしておきましょう。 モデレーターのアルテムは論外。モデレーターのアルテムがディベート中 :) Nerd Trader 2021.08.24 18:43 #15980 void OnTick() { if(isCrossing() == 1) ... if(isCrossing() == 2) ... } int isCrossing(){ double ma = iMA(NULL, g_timeFrame, g_maPeriod, g_maShift, g_maMethod, g_maApplietPrice, 0); double low = iLow(Symbol(), g_timeFrame, 0); double high = iHigh(Symbol(), g_timeFrame, 0); if(g_barTime < iTime(NULL,g_timeFrame,0) && high > ma && Bid <= ma){ g_barTime = iTime(NULL,g_timeFrame,0); return 1; } if(g_barTime < iTime(NULL,g_timeFrame,0) && low < ma && Bid >= ma){ g_barTime = iTime(NULL,g_timeFrame,0); return 2; } return 0; }isCrossing() はなぜ2を 返さないのか?isCrossing() 自体には2つ目のif 項目がありますが、そうするとisCrossing() == 2の ときにOnTick() にif 項目がありません。何をバカなことを...。 1...159115921593159415951596159715981599160016011602160316041605...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ただし、端末が十分な履歴を持つこと、またそれを保証するものではありません。
上記の例では、履歴への言及はありません。
ので、OrderSelect()の結果が真であることが保証されます。
UPD: 4のOrderSelectは 非常によく機能します。一度テストしましたが、成行注文の場合、注文のプロパティにアクセスする時間が......。本当に毎秒何百万回なのか、調べたくありません。モデレーターのアルテムと議論していたような気がしますが、「一長一短」と言いますし、気に入ったのなら、そのままにしておきましょう。
こんにちは、各取引のドローダウンのデータが欲しいというニーズがあります。
このような統計情報を収集し、レポートの形で出力するスクリプトに出会える方はいらっしゃいますか?
ありがとうございました。
こんにちは、各取引のドローダウンのデータが欲しいというニーズがあります。
このような統計情報を収集し、レポートの形で出力するスクリプトに出会える方はいらっしゃいますか?
しゃい
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
手書き」であり、未検証、バグだらけです :-) 自分のニーズに合わせて調整し、使用してください。
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
手書きで書いたので、チェックはしていませんし、間違いだらけです :-) あなたのニーズと使用に合わせて調整してください。
ありがとうございます。
@Igor Makanu さん、ターミナルでのソート順についてのご回答、どうもありがとうございました。構造体の配列として保存して、自分でソートすることになるんでしょうね。というのも、このような動作が毎ティック行われることで、パフォーマンスに顕著な悪影響が出るのではと危惧したからです。
では、なぜダニごとにソートするのでしょうか?エントリーの数が変わったり、リストが完全に変わったりしたときだけ十分...。
上記の例では、歴史への言及はありません。
ので、OrderSelect()の結果が真であることが保証されます。
UPD: 4のOrderSelectは 非常にうまく機能しており、一度テストしていました - 成行注文の場合、注文のプロパティにアクセスする時間....本当に毎秒何百万回なのか、調べたくありません。モデレーターのアルテムと議論していたような気がしますが、「一長一短」と言いますし、気に入ったのなら、そのままにしておきましょう。