SLと口座リスクに基づいたマネーマネジメントのLOTサイズ計算式が必要! - ページ 4 1234 新しいコメント Keith Watford 2015.02.06 01:39 #31 darelco:...コードのこの部分は、新しいコンパイルの問題です(エラー ---> 'MarketInfo' - 不法なスイッチ式タイプ)おそらくそれは、MT4ビルド600 +への更新まではすべてOKでした...しかし、それ以来、それはもう動作しません。ということで、何か新しいバージョンを投稿していただけないでしょうか・・・もちろん、まだご存じであればの話ですが。私は、もしあなたが switch ( MarketInfo( strSymbol, MODE_DIGITS ) )にしてください。 int dig=MarketInfo( strSymbol, MODE_DIGITS ) ; switch ( dig )それは大丈夫にコンパイルされます Alain Verleyen 2015.02.06 08:07 #32 darelco:...コードのこの部分は、新しいコンパイルの問題です(エラー ---> 'MarketInfo' - 不法なスイッチ式タイプ)おそらくそれは、MT4ビルド600 +への更新まではすべてOKでした...しかし、それ以来、それはもう動作しません。そこで、何か新しいバージョンを投稿していただけないでしょうか・・・もちろん、まだご存じであればの話ですが。 switch((int)MarketInfo(strSymbol,MODE_DIGITS)) gadget 2015.02.06 09:00 #33 https://book.mql4.com/operators/switch「ExpressionとParametersの値は、int 型の値のみです。Expressionは定数、変数、関数呼び出し、または式にすることができます。 各バリエーションの'場合'は、整数定数、文字定数、または定数式でマークすることができます。定数式には、変数や関数呼び出しを含めることはできません。" Keith Watford 2015.02.06 10:18 #34 angevoyageur: switch((int)MarketInfo(strSymbol,MODE_DIGITS)) またしても、よりシンプルで優れた解決策を思いつきましたね。 Alain Verleyen 2015.02.06 10:39 #35 GumRai: またしても、よりシンプルで優れた解決策を思いつきましたね。 私たちは皆、互いから学んでいるのです。 William Roeder 2015.02.06 12:12 #36 int dig=MarketInfo( strSymbol, MODE_DIGITS ) ; switch ( dig ) または switch((int)MarketInfo(strSymbol,MODE_DIGITS)) またはオブジェクトスタイル(ポインタのキャストを除いて動作します) switch( int(MarketInfo(strSymbol,MODE_DIGITS)) ) Sebastien Pelle 2017.03.05 04:20 #37 私の別のEAでは、このように書きます。extern double Risk_Percent = 3;extern int StopLoss = 50;//+------------------------------------------------------------------+ { double lot = MathCeil(AccountFreeMargin() * Risk_Percent / 1000) / 100; if(lot<MarketInfo(Symbol(),MODE_MINLOT))lot=MarketInfo(Symbol(),MODE_MINLOT); if(lot>MarketInfo(Symbol(),MODE_MAXLOT))lot=MarketInfo(Symbol(),MODE_MAXLOT); return (MathMin(NormalizeDouble(lot,PipMultiplier),MaxLotSize)); }//+------------------------------------------------------------------+ if(_Digits==5 || _Digits==3)PipMultiplier=10; else PipMultiplier=1; slippage=Slippage*PipMultiplier; if(_Digits<4) { point=0.01; } else { point=0.0001; } return(0);//+------------------------------------------------------------------+ Need moneymanagement LOT size 信じられない! コーディングのヘルプが必要 William Roeder 2017.03.05 12:34 #38 Sebastien Pelle: 私の別のEAでは、それは次のように書かれています。 double lot = MathCeil(AccountFreeMargin() * Risk_Percent / 1000) / フリーマージンはあなたの リスクとは関係ありません。それはブローカーの ストップロス(口座の50%)です。あなたは投稿するのではなく、スレッド全体を読むべきでした。要約すると ストップを置くべき場所、つまり取引の理由がもはや有効でない場所に置くのです。例:サポートバウンドを取引する場合、ストップはサポートより下になります。 口座残高 * パーセント/100 = リスク = OrderLots * (|OrderOpenPrice - OrderStopLoss| *DeltaPerLot+ CommissionPerLot) (OOP-OSL には SPREAD が含まれ、DeltaPerLot は通常約 $10/pip ですが、ペアと口座通貨の為替レートを考慮します). TickValueを単独で使用しないでください -DeltaPerLot ロットを適切に正規化 し、最小値と最大値を チェックする必要があります。 ストップ・アウトを 避けるために、FreeMarginもチェックしなければなりません。 エキスパートアドバイザー - 雑多な質問 MODE_SPREAD Sum of all Open 1234 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
...コードのこの部分は、新しいコンパイルの問題です(エラー ---> 'MarketInfo' - 不法なスイッチ式タイプ)おそらくそれは、MT4ビルド600 +への更新まではすべてOKでした...しかし、それ以来、それはもう動作しません。
ということで、何か新しいバージョンを投稿していただけないでしょうか・・・もちろん、まだご存じであればの話ですが。
私は、もしあなたが
switch ( MarketInfo( strSymbol, MODE_DIGITS ) )
にしてください。
それは大丈夫にコンパイルされます
...コードのこの部分は、新しいコンパイルの問題です(エラー ---> 'MarketInfo' - 不法なスイッチ式タイプ)おそらくそれは、MT4ビルド600 +への更新まではすべてOKでした...しかし、それ以来、それはもう動作しません。
そこで、何か新しいバージョンを投稿していただけないでしょうか・・・もちろん、まだご存じであればの話ですが。
https://book.mql4.com/operators/switch
「ExpressionとParametersの値は、int 型の値のみです。Expressionは定数、変数、関数呼び出し、または式にすることができます。 各バリエーションの'場合'は、整数定数、文字定数、または定数式でマークすることができます。定数式には、変数や関数呼び出しを含めることはできません。"
またしても、よりシンプルで優れた解決策を思いつきましたね。
私の別のEAでは、このように書きます。
extern double Risk_Percent = 3;
extern int StopLoss = 50;
//+------------------------------------------------------------------+
{
double lot = MathCeil(AccountFreeMargin() * Risk_Percent / 1000) / 100;
if(lot<MarketInfo(Symbol(),MODE_MINLOT))lot=MarketInfo(Symbol(),MODE_MINLOT);
if(lot>MarketInfo(Symbol(),MODE_MAXLOT))lot=MarketInfo(Symbol(),MODE_MAXLOT);
return (MathMin(NormalizeDouble(lot,PipMultiplier),MaxLotSize));
}
//+------------------------------------------------------------------+
if(_Digits==5 || _Digits==3)PipMultiplier=10;
else PipMultiplier=1;
slippage=Slippage*PipMultiplier;
if(_Digits<4)
{
point=0.01;
}
else
{
point=0.0001;
}
return(0);
//+------------------------------------------------------------------+
double lot = MathCeil(AccountFreeMargin() * Risk_Percent / 1000) /