PDA

View Full Version : 恋愛の質問



Chieko
10-20-2009 20:11, 08:11 PM
誰かがこのEAがどのように私がmt4の言語で非常によく理解している各取引原因のロットサイズを計算するかを私に説明することができますか?

//|最適ロットサイズの計算|
// ----------------------------------------------- -------------------
double LotsOptimized()
{
ダブルロット=ロット;
int orders = HistoryTotal();/履歴オーダー合計
int loss = 0;/休憩なしの損失注文数
//----ロットサイズを選択する
lot = NormalizeDouble(AccountFreeMargin()* MaximumRisk1000.0,1);
//----破損せずに損失注文の数を計算する
if(DecreaseFactorlt; 0)
{
for(int i = orders-1; igt; = 0; i--)
{
if(OrderSelect(i、SELECT_BY_POS、MODE_HISTORY)== false){Print(エラー履歴)!ブレーク; }
if(OrderSymbol()!= Symbol()|| OrderType()gt; OP_SELL)continue;
//----
if(OrderProfit()gt; 0)break;
if(OrderProfit()lt; 0)の損失 ;
}
if(lossesgt; 1)lot = NormalizeDouble(lot-lot * lossesDecreaseFactor、1);
}
//----返品ロットサイズ
if(lotlt; 0.01)lot = 0.01;
リターン(ロット);

HIDEYOSHI
09-25-2021 11:37, 11:37 AM
この行から:double lot = Lots; ... if(lossesgt; 1)lot = NormalizeDouble(lot-lot * lossesDecreaseFactor、1);最初に、Lotsという名前の最初のロットサイズがあります(コードの先頭にあるextern変数を見てください)、Lots = 0.2としましょう。あなたの連続損失が2(損失より大きい場合)の場合にはDecreaseFactor = 5となり、ロットサイズ= 0.2 - 0.2 * 2/5 = 0.2 - 0.45 = 0.2 - 0.08 = 0.12 1小数点= gt; NormalizeDouble(...、1)0.12 = gt; 0.1この助けを願って

Chieko
09-25-2021 12:58, 12:58 PM
私は今理解していただきありがとうございます!!!!

この行から:double lot = Lots; ... if(lossesgt; 1)lot = NormalizeDouble(lot-lot * lossesDecreaseFactor、1);最初に、Lotsという名前の最初のロットサイズがあります(コードの先頭にあるextern変数を見てください)、Lots = 0.2としましょう。あなたの連続損失が2(損失より大きい場合)の場合にはDecreaseFactor = 5となり、ロットサイズ= 0.2 - 0.2 * 2/5 = 0.2 - 0.45 = 0.2 - 0.08 = 0.12 1小数点= gt; NormalizeDouble(...、1)0.12 = gt; 0.1この助けを願って

この行から:double lot = Lots; ... if(lossesgt; 1)lot = NormalizeDouble(lot-lot * lossesDecreaseFactor、1);最初に、Lotsという名前の最初のロットサイズがあります(コードの先頭にあるextern変数を見てください)、Lots = 0.2としましょう。あなたの連続損失が2(損失より大きい場合)の場合にはDecreaseFactor = 5となり、ロットサイズ= 0.2 - 0.2 * 2/5 = 0.2 - 0.45 = 0.2 - 0.08 = 0.12 1小数点= gt; NormalizeDouble(...、1)0.12 = gt; 0.1この助けを願って

Chieko
09-25-2021 14:19, 02:19 PM
私には分からないことがあります。アカウントのフリーマージンが3000、最大リスクが.01の場合、ロットサイズは3000 * .011000 = .03である必要がありますが、EAのロットサイズは.01です。アカウントが5000に成長するとEAは.1のロットを開くことはほとんどありませんが、この時点で5000 * .011000 = .05のロットを開くはずです。/|最適ロットサイズの計算|/ ----------------------------------------------- ------------------- double LotsOptimized(){ダブルロット=ロット; int orders = HistoryTotal();/履歴オーダーの合計損失額= 0;/休憩なしの損失注文数//---- select lot size lot = NormalizeDouble(AccountFreeMarg in()* MaximumRisk1000.0,1);もし、(OrderSelect(i、SELECT_BY_POS、MODE _HISTORY)) - ( - )----- ---- - )== false){印刷(履歴のエラー!);ブレーク; } if(OrderSymbol()!= Symbol()|| OrderType()gt; OP_SELL)continue;/---- if(OrderProfit()gt; 0)break; if(OrderProfit()lt; 0)の損失 ; }(lossgt; 1)lot = NormalizeDouble(lot-lot * lossDecreaseFactor、1); }/----ロットサイズを返すif(lotlt; 0.01)lot = 0.01;リターン(ロット);
https://www.forexgroove.com/trading-system-and-egies/104-trading-journal.html

Chieko
09-25-2021 15:39, 03:39 PM
私はまだEaが適切なロットサイズを開けない理由を理解できない。 Cqn womeoneは、1がコード内で何を表しているかを教えてくれます.... lot = NormalizeDouble(AccountFreeMarg in()* MaximumRisk1000.0,1);

私には分からないことがあります。アカウントのフリーマージンが3000、最大リスクが.01の場合、ロットサイズは3000 * .011000 = .03である必要がありますが、EAのロットサイズは.01です。アカウントが5000に成長するとEAは.1のロットを開くことはほとんどありませんが、この時点で5000 * .011000 = .05のロットを開くはずです。/|最適ロットサイズの計算|/ ----------------------------------------------- ------------------- double LotsOptimized(){ダブルロット=ロット; int orders = HistoryTotal();/履歴オーダーの合計損失額= 0;/...

私には分からないことがあります。アカウントのフリーマージンが3000、最大リスクが.01の場合、ロットサイズは3000 * .011000 = .03である必要がありますが、EAのロットサイズは.01です。アカウントが5000に成長するとEAは.1のロットを開くことはほとんどありませんが、この時点で5000 * .011000 = .05のロットを開くはずです。/|最適ロットサイズの計算|/ ----------------------------------------------- ------------------- double LotsOptimized(){ダブルロット=ロット; int orders = HistoryTotal();/履歴オーダーの合計損失額= 0;/...

HIDEYOSHI
09-25-2021 17:00, 05:00 PM
こんにちは、私の最後の返事に間違った論理があるようです。関数は最初にロット変数からではなく、ロット= NormalizeDouble(AccountFreeMarg()* MaximumRisk1000.0,1)からロットサイズを計算しました。まず、NormalizeDouble(..、1)について、1桁の精度で値を返します。たとえば、var1 = 5/8 = 0.625となります。 NormalizeDouble(var1,2)= 0.63 gt;小数点以下2桁NormalizeDouble(var1,1)= 0.6 gt; gt; gt;小数点以下1桁をAccountFreeMargin = 3000 MaximumRisk = 0.01 AccountFreeMargin * MaximumRisk1000 = 3000 * 0.011000 = 0.03 lot = NormalizeDouble(0.03,1)= 0.0 !!! 3は小数点の後の左から数えてから、結果を返す前の2番目の位置にあるので、省略されます://---- return lot size if(lotlt; 0.01)lot = 0.01;リターン(ロット);その結果、計算されたロットの結果が0よりも小さく、0.01よりも小さいため、この関数は0.01を返しました。最後に、(DecreaseFactorlt; 0)の代わりにif(DecreaseFactorgt; 0)を使用し、DecreaseFactorの値が正の値(たとえば3)であることを確認してください。