//+------------------------------------------------------------------+//| Расчет лота |//+------------------------------------------------------------------+double Lots()
{
double L=0;
// если последняя закрытая сделка убыточная и лот равен стартовому// включаем Мартинif(GetInfoLastPos(2)<0&&GetInfoLastPos(1)==Lot)
{
Martin=true;
}
// если последняя закрытая сделка убыточная и лот больше или равен максимальному// выключаем Мартинif(GetInfoLastPos(2)<0&&GetInfoLastPos(1)>=MaxMartinLot)
{
Martin=false;
}
// если последняя закрытая сделка убыточная и Мартин включен, умножаем лотif(Martin==true)
{
L=NormalizeDouble(GetInfoLastPos(1)*K_Martin,DigitsLot);
}
// если последняя закрытая сделка убыточная и Мартин выключен, делим лотif(Martin==false)
{
L=NormalizeDouble(GetInfoLastPos(1)/K_Martin,DigitsLot);
}
if(L>MAXLOT) L = MAXLOT;
if(L<MINLOT) L = MINLOT;
return(L);
}
//+----------------------------------------------------------------------------+//| Функция возвращает по символу и магику |//| 1 - размер лота последней закрытой позиции |//| 2 - размер профита с учетом комиссии и свопа последней закрытой позиции |//| 3 - время последней закрытой позиции |//+----------------------------------------------------------------------------+double GetInfoLastPos(int a=1)
{
datetime t=0;
double result=0,l=0,p=0,f=0;
int i=OrdersHistoryTotal();
for(int pos=0; pos<i; pos++)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(t<OrderCloseTime()) {t=OrderCloseTime(); l=OrderLots(); p=OrderProfit()+OrderCommission()+OrderSwap();}
}
}
}
}
if(a==1) {result=l;} elseif(a==2) {result=p;} elseif(a==3) {result=(double)t;}
else {result=0;}
return(result);
}
モジュールの違い。モジュール無しでは、トップゾーンのみ条件に該当します。オープンプライス-ビッド|>10*_ポイントオープニング条件
このように、BidがOpenPriceより 低く、Moduleが ない状態であることが望ましい。
そうでなければ、ビッドがOpenPriceより 高い場合、正しい結果が得られます。
モジュールの違い。モジュール無しでは、トップゾーンのみが条件に該当します。オープンプライス - ビッド|>10*_ポイントオープニング条件
よくわからないんだけど...。
もっとわかりやすくしてくれないかな...初心者のために)
驚かせてくれますね。
どうやって?
画像から、OpenPrice - Bidは10*_Point以上であってはならないことが分かります。
が、マイナスを含めて少なくなることがあります。
が、マイナスを含めて少なくなることがあります。
そう...そして、"&& > 0 "で条件を取得します。
質問は何ですか?そのままか、何かのためにか?
そう...そして、"&& > 0 "で条件を取得します。
質問は何ですか?そのままか、何かのためにか?
私は現在、この定義で市場に参入して います
簡略化する方法があるのではと思い)
martinのためにコードの一部を最適化するのを助ける
課題はこれだ。
-停止後、マーティンがロットに乗ります。
-乗算回数は関数OrdersCloseで調整でき、指定した値に達するとロットは開始時のものにリセットされます。
- ロットボリュームはリセットせず、逆順に順次減少させなければならない。
例えば、OrdersClose=5, Martin=2, lot=0.01のような場合です。
0.01; 0.02; 0.04; 0.08; 0.16 (リセット) 0.01; 0.01;,,,, という順序になります。
need:0.01; 0.02; 0.04; 0.08; 0.16 (リセット) 0.16; 0.08; 0.04;...です。0,01.
自分で解決できるほどの知識はない。
いろいろな組み合わせを試したが、思うような効果が得られない。
私は現在、このマーケットエントリーポイントの 定義を使っています。
簡略化する方法があるのではと思い)
そして、Alexeyはそれを正しく理解している))
条件によってこうなるはず、Bid belowOpenPriceとNo modules。
そうでなければ、BidがOpenPriceより 高い場合、正しい結果が得られます。
固定)
はい、正解です。状態は変化しなかった。癖で。Bidが真ん中にあるのは写真ではわかりにくいですね)))
しかし、2つ目の条件である、エントリー数は同じです。
martinのためにコードの一部を最適化するのを助ける
課題はこれだ。
-停止後、マーティンがロットに乗ります。
-乗算回数は関数OrdersCloseで調整でき、指定した値に達するとロットは開始時のものにリセットされます。
- ロットボリュームはリセットせず、逆順に順次減少させなければならない。
例えば、OrdersClose=5, Martin=2, lot=0.01のような場合です。
0.01; 0.02; 0.04; 0.08; 0.16 (リセット) 0.01; 0.01;,,,, という順序になります。
need:0.01; 0.02; 0.04; 0.08; 0.16 (リセット) 0.16; 0.08; 0.04;...です。0,01.
自分で解決できるほどの知識はない。
いろいろな組み合わせを試したが、思うような効果が得られない。
そして、Alexeiはそれを正しく理解している))
はい、その通りです。コンディションは変わらなかった。癖で。Bidが真ん中にあるのが写真ではわかりにくいですね)))
ありがとうございました。)