ヒーッ!ヒーッ!ヒーッ!ヒーッ!ヒーッ!ヒーッ!ヒーッ!ヒーッ!」。 - ページ 4

 
RaptorUK:
何をするために......あなたは実際に何をしたいのか説明していません......具体的な質問をされたにもかかわらず......。もし、あなたが質問されたことを無視すれば、あなたはすぐに無視されるでしょう。

ターボをつけるかつけないか
 
jameslarry:

ターボをつけるかつけないか
OK、楽しんでください......助けは要りませんよ。
 
私が望んでいたようなシステムを手に入れたので、すぐに皆さんにお見せします。
 

初心者のため、できるだけシンプルなものがいいということだったので、一番わかりやすいものを探しました。

extern double LotPerThousand=0.1;  // If you had 1000 balance what lot size would you use

int start()
{

double lots;

lots=NormalizeDouble((LotPerThousand/1000)*AccountBalance(),2);
if(lots<MarketInfo(Symbol(),MODE_MINLOT)){ lots=MarketInfo(Symbol(),MODE_MINLOT); }
if(lots>MarketInfo(Symbol(),MODE_MAXLOT)){ lots=MarketInfo(Symbol(),MODE_MAXLOT); }

...
OrderSend(Symbol(),OP_BUY,lots,...)
...

return 0;
}
 
tonny:
初心者のため、できるだけシンプルなものがいいということなので、一番わかりやすいものを探しました。
ロットサイズはminlotとmaxlotの間であり、かつlotStepの倍数でなければなりません。
double NormalizeLots(double lots, string pair=""){
    if (pair == "") pair = Symbol();
    double  lotStep     = MarketInfo(pair, MODE_LOTSTEP),
            minLot      = MarketInfo(pair, MODE_MINLOT);
    lots            = MathRound(lots/ls) * ls;
    if (lots < minLot) lots = 0;    // or minLot
    return(lots);
}
 
tonny:

初心者のため、できるだけシンプルなものがいいということだったので、一番わかりやすいものを探しました。


ビンゴ!Tonny これはまさに私が欲しかったもので、Strategy Testerで 動作し、パーセンテージを維持しながらロットサイズを自動で増加させます。無数のif文で構成された私の以前のものよりも優れています。:-)
 
そういえば、数学で、aがbに、cが? この場合、cはあなたの口座残高に なります。そして、結果はa:dの比率を表します。つまり、結果がdだとすると、a:bはc:dと同じで、b:aはd:aと同じ比率になります。そして、計算が小数点以下2桁を超えた場合、ordersendが無効なロットサイズとして拒否するため、式をnormalize doubleに入れ、小数点以下2桁を丸めたロット値を取得するだけです。この値が必要最小ロットより小さい場合は必要最小ロットを使用し、必要最大ロットより大きい場合は最大ロットを使用します。
/* new value of lot would be (old lot/old balance)*new balance in this case we fix old balance at 1000 and new balance is the current balance i.e. (LotPerThousand/1000)*AccountBalance() */

lots=NormalizeDouble((LotPerThousand/1000)*AccountBalance(),2);                            // round two 2 decimal places incase more than 2 decimal places is returned
if(lots<MarketInfo(Symbol(),MODE_MINLOT)){ lots=MarketInfo(Symbol(),MODE_MINLOT); }        // if lower than minimum required use the minimum
if(lots>MarketInfo(Symbol(),MODE_MAXLOT)){ lots=MarketInfo(Symbol(),MODE_MAXLOT); }        // if higher than maximum required use the maximum
 
ありがとうございました。
 
WHRoeder:
ロットサイズはminlotとmaxlotの間であり、かつlotStepの倍数でなければなりません。

親愛なるWHRoeder、多くのエラーを含むコードを与えることによって人々を誤解させないでください、あなたはコードでlsオブジェクトを定義していない、あなたはそれを使用するために誰かに与えている、あなたのいたずらな行動を停止してください。

 
tonny:

あなたが初心者のため、できるだけシンプルなものを望んでいるようなので、私は最も理解しやすいものを探しました。


tonnyさん、あなたがくれたコードにとても感謝しています。



私は2日間それを見つけて、さらに私の妻とそれについてquarelledました


感謝