MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1329

 
Tanita Gajduchok:
こんにちは、ここでリーダーボードを作るにはどうしたらいいでしょうか?

トップ ?

 
ごあいさつ

このような関数の書き方。

上昇中のローソク足の出来高の合計が、下降中の出来高の合計の2倍になるように、例えば過去10本分のローソク足を設定します。

スクリーンショットにあるような


ファイル:
IMG_9206.PNG  87 kb
 

皆さん、こんにちは。グレイルマシンにロットサイズ計算を付けて、損失が出た場合に保証金の何%というロットを設定できるようにしようとしています。つまり、ストップロスが発動した場合、指定した割合の保証金が失われる、あるいはこの割合に対して保証金が少ない場合、ブローカーが可能な最小ロットに設定する...そんなことをするスクリプトをどこかのサイトで見つけてスクリプトコードを自分に転送しましたが、ロットが正しく考慮されない...そうしてみました。入力変数に、最大リスクを担当する変数を宣言しました。

extern int MaxRisk=1;// МАКСИМАЛЬНЫЙ % УБЫТКА ПРИ СТОП ЛОССЕ?

そして、on tickで変数を宣言しています。口座内の自由資金 量を格納する変数です。シンボルのポイント値を表す変数。ブローカーの最小ロットの変数。ブローカーでの最大ロットの値を格納する変数です。そして、ロットサイズのステップを格納する変数。

  double Free =AccountFreeMargin();// ПОЛУЧАЕМ СВОБОДНЫЕ СРЕДССТВА ДЛЯ РАСЧЁТА ОБЪЁМА ЛОТА
  double LotVal =MarketInfo(Symbol(),MODE_TICKVALUE); //СТОИМОСТЬ 1 ПУНКТА
  double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);   // МИНИМАЛЬНЫЙ ЛОТ РАЗРЕШЁННЫЙ БРОКЕРОМ
double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);     // МАКСИМАЛЬНЫЙ ЛОТ РАЗРЕШЁННЫЙ БРОКЕРОМ
double Step =MarketInfo(Symbol(),MODE_LOTSTEP);    // ШАГ ИЗМЕНЕНИЯ РАЗМЕРА ЛОТА

そして、あるストップロスにあるリスクを持ったロット量を計算します。ストップロスはatpまたはpipsで固定で計算されます - 私は固定ロットを置く場合は、すべてがうまく開いて動作しているため、この計算は正しく動作します。ロットボリュームの計算式は以下の通りです。

double lot =MathFloor((Free*MaxRisk/100)/(sl*LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА, КОТОРУЮ Я СОВСЕМ НЕ ПОНИМАЮ((((
  if(lot<Min_Lot) lot=Min_Lot; //ЕСЛИ ЛОТ ПОЛУЧИЛСЯ МЕНЬШЕ ЧЕМ МИНИМАЛЬНЫЙ ЛОТ У БРОКЕРА ТО ЛОТ ПРИСВАЕМАЕМ МИНИМАЛЬНЫЙ ЛОТ У БРОКЕРА
if(lot>Max_Lot) lot=Max_Lot;  //ЕСЛИ ЛОТ ПОЛУЧИЛСЯ БОЛЬШЕ ЧЕМ МАКСИМАЛЬНЫЙ ЛОТ У БРОКЕРА ТО ОЛТ ПРИСВАЕВАЕМ МАКС ЛОТ У БРОКЕРА

 


印刷ロット値を通じて計算のすべてが終了したら、それを表示します。

Print("ЛОТ ДО НОРМАЛИЗАЦИИ= "+lot);
 lot=NormalizeDouble(lot,Digits());
Print("ЛОТ ПОСЛЕ НОРМАЛИЗАЦИИ= "+lot);

ログブックに表示される内容 ロットとストップのログはどうなっているのか - ストップの値は正しいがロットが正しくない(((

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Информация о счете - Состояние окружения - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
DanilaMactep:

皆さん、こんにちは。グレイルマシンにロットサイズ計算を付けて、損失が出た場合に保証金の何%というロットを設定できるようにしようとしています。つまり、ストップロスが発動した場合、指定した割合の保証金が失われる、あるいはこの割合に対して保証金が少ない場合、ブローカーが可能な最小ロットに設定する...そんなことをするスクリプトをどこかのサイトで見つけてスクリプトコードを自分に転送しましたが、ロットが正しく考慮されない...そうしてみました。入力変数に、最大リスクを担当する変数を宣言しました。

そして、on tickで変数を宣言しています。口座内の自由資金 量を格納する変数です。シンボルのポイント値を表す変数。ブローカーの最小ロットの変数。ブローカーでの最大ロットの値を格納する変数です。そして、ロットサイズのステップを格納する変数。

そして、あるストップロスにあるリスクを持ったロット量を計算します。ストップロスはatpまたはpipsで固定で計算されます - 私は固定ロットを置く場合は、すべてがうまく開いて動作しているため、この計算は正しく動作します。ロットボリュームの計算式は以下の通りです。


これらの計算の後、ロット値をプリントして確認します。

ログブックに印刷されている内容は、***で見ることができます。

一見すると、機能に問題はなさそうです。計算式に入れるべきは、注文のストップロス価格ではなく、注文開始からストップまでの距離(ポイント)だけです。

そして、ロットを_Digitsではなく、Step - (ロットサイズの増分ステップ)の精度で正規化する必要があります。 Printは同じ精度でDoubleToString()を介して出力されるべきで、その後、あなたが見たいものを見ることができます。

 
DanilaMactep:

皆さん、こんにちは。ロットサイズ計算をグレイルマシンに取り込もうとしています。

こんなことをしました

Order_Lots = NormalizeDouble((AccountBalance()/100*Percen)/(MarketInfo(Symbol(),MODE_TICKVALUE)*Stop_Point)-0.005,2);
 
Alexey Viktorov:

一見すると機能に問題はなさそうです。計算式に加えるべきは、注文のストップロス価格ではなく、注文開始時点からストップまでの距離(ポイント)だけです。

さらに、ロットの精度を_DigitsではなくStep - (ロットサイズの増分ステップ)に正規化し、同じ精度でDoubleToString()を使用してPrintに出力する必要があります。

私の数学はあまり得意ではありません。注文の開始位置からストップまでの距離を計算し、slをこれに置き換えるにはどうしたらよいでしょうか?

DoubleToString("ЛОТ ПОСЛЕ НОРМАЛИЗАЦИИ= "+lot);// ВЫВОД ЗНАЧЕНИЯ ЛОТА
ロット値を次のように正規化します。
lot=NormalizeDouble(lot,Step);// НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ ЛОТА 

そのため、オープンポジションからストップまでの距離をどのようにコードで計算するかは、今後の課題です。

 
DanilaMactep:

では、オープンからストップまでの距離をどのようにコードで計算するかは、今後の課題ですね。

if(buy)
Stop_Point= (Pric_UP-Loss_UP)/Point+Spread; 
else
Stop_Point= (Loss_DN-Pric_DN)/Point+Spread; 
 
MakarFX:

このコードの一部分を提供していただき、ありがとうございます。私は魔法使いではありません、勉強しているだけです。

 
DanilaMactep:

このコードの一部分を提供していただき、ありがとうございます。私はマジシャンではない、ただ学んでいるだけだ

Pric_UP

買い

Loss_UP

買い値

   Spread = StrToInteger(DoubleToString(MarketInfo(Symbol(),MODE_SPREAD),0));
ひろがり
 
Порт-моне тв:
ごあいさつ

このような関数の書き方。

上昇中のローソク足の出来高の合計が、下降中の出来高の合計の2倍になるように、例えば過去10本分のローソク足を設定します。

スクリーンショットにあるような


どなたか助けてください。