[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 243

 
costy_ >> :

オープニングがma1より高くなったら買いに行くべき。

私は "tumblr "を理解する||私は、例えば "場合 "を表す方法を知らないように(ma1>ma2&ma1>Open[1] "or" ma1>ma3&&ma1>Open[1] )。"then" Open BAY();


グラフを見ると、すべての条件を満たしているわけではないことがわかりますね!!!


53本のキャンドルを購入した際、他を試した。


他にロジックを実装する方法は?


あなたのコードの一部には、膨大な数のエラーがあります。

それらをすべて記述し、なぜそうなのか、そうでないのかを説明する......。そんなに時間がないんです。

とりあえず訂正しておきます。

if (( ma1> ma2 && ma1> ma3 && Open[1]> ma1) || 
    ( ma2> ma1 && ma2> ma3 && Open[1]> ma1) ||
    ( ma3> ma1 && ma3> ma2 && Open[1]> ma1)
  )
  OpenBuy();
時間があるときに、もっとヒントを与えるかもしれない.



 
ありがとう、わかったよ
if (( ma1> ma2 && ma1> ma3  && Open[1]> ma1) || 
    ( ma2> ma1 && ma2> ma3  && Open[1]> ma1) ||
    ( ma3> ma1 && ma3> ma2  && Open[1]> ma1)
   )
    OpenBuy();

が、そうせざるを得ない。

if ( ma1> ma2 && ma1> ma3 && Open[1]> ma1)
OpenBuy();
if ( ma2> ma1 && ma2> ma3 && Open[1]> ma1)
OpenBuy();
if ( ma3> ma1 && ma3> ma2 && Open[1]> ma1)
OpenBuy();
 
costy_ >> :

>> としなければならない。

同じことですが、最初の選択肢の方が短いだけです。

 
MrSoros >> :

同じことですが、最初の選択肢の方が短いだけです。

残念ながら、最初のオプションはグラフ上で正しく機能しませんでした(すべて変です)。

まずはより美しく、そして論理的には、まず足し算、次に掛け算という感じです。=))

 
MrSoros >> :

看板は大丈夫です。

発想そのもの(CCIクロージング)が、私から見ると、アッチーではないのですが・・・。

以前にも同じようなことがありました...。

しかし、それはすでに戦略上の問題です。

>> トレーダーの数だけ、戦略もある。


いや、それはアルゴリズムがどう動くかではなく、今は利益が10pp以上ならCCIで閉じますし、利益が10pp以上ならCCIで閉じないように、そこだけ10ppの利益のレベルが正確に必要です。今は利益値が10pp以上ならCCIで閉じます(

この関数のアルゴリズムの非常に意味が異なっている、10ppの利益レベルがある - それは仮想利益であり、SSI指標の方向に句によって固定されています。 そして、このレベルを通過した後、トレンドの方向が変わったり、最初の状態に逆戻りすることがありますが、この場合、SSIは常に反対方向を見ており、10ppレベルで反対方向に通過した場合、SSIが反対方向を見るので、注文が確定します。

  if (OrderType() == OP_BUY && cci_0< cci_1 && Bid-OrderOpenPrice() >= Point* profit) OrderClose(OrderTicket(), OrderLots(), Bid, slip, Blue);
  if (OrderType() == OP_SELL && cci_0> cci_1 && OrderOpenPrice() - Ask >= Point* profit) OrderClose(OrderTicket(), OrderLots(), Ask, slip, Red);

  

  cci_0< cci_1 && Bid-OrderOpenPrice() == Point* profit // может вот так? - так вообще не работает(
 

こんにちは。

ロットサイズが残高に対する割合で正しく計算されているかを確認します。

//расчёт размера лота
double Lots()
   {
   double ls=MarketInfo(Symbol(),MODE_MINLOT)+MarketInfo(Symbol(),MODE_LOTSTEP)*MathFloor(( procentdepo*AccountBalance()/100000-MarketInfo(Symbol(),MODE_MINLOT))/MarketInfo(Symbol(),MODE_LOTSTEP));
     if( ls>MarketInfo(Symbol(),MODE_MAXLOT))   { ls=MarketInfo(Symbol(),MODE_MAXLOT); }
     if( ls<MarketInfo(Symbol(),MODE_MINLOT))   { ls=MarketInfo(Symbol(),MODE_MINLOT); }
   return( ls);
   }

ここで、procentdepoは保証金の割合です。

 
Piboli >> :

こんにちは。

ロットサイズが残高に対する割合で正しく計算されているかを確認します。

ここで、procentdepoは保証金の%です。

これをやってください。

extern double PercentLots  = 0.5;// внешние переменные


//то что ниже закиньте в конец кода
double GetLots() 
{
double minlot = MarketInfo(Symbol(), MODE_MINLOT);
double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);

if( PercentLots!=0)
 {
   double lot = NormalizeDouble(AccountBalance() * PercentLots  /1000.0 / 100.0, 2);
   if( lot < minlot) lot = minlot;
   if( lot > maxlot) lot = maxlot;
  }
  else lot= Lots; 
  return( lot);
  }  

//GetLots() - вставьте в ticket=OrderSend(Symbol(),OP_BUY,GetLots(),Ask,3,stop,Ask+Takeprofit*Point,"",MagicNumber,0,Green);
 
Piboli >> :

こんにちは。

ロットサイズが残高に対する割合で正しく計算されているかどうかを確認します。

ここで、procentdepoは預かり金の割合です。

さらに、このロット最適化機能を使用すると、不採算取引がある場合は、ロットが初期のものに削減され、ここでMMを動作します。

//внешние переменные
extern double Lots = 0.1;          //стартовый лот до баланса 500
extern double MaximumRisk = 0.1;   //увеличение лота на каждые 500 баланса
extern double DecreaseFactor = 3.0;//уменьшение лота при серии убыточных позиций


//то что ниже  закиньте перед стартом
double LotsOptimized() {
       double lot = Lots;
       int orders = OrdersHistoryTotal();
       int losses = 0;
       lot = NormalizeDouble(AccountFreeMargin() * MaximumRisk / 500.0, 2);
       if ( DecreaseFactor > 0.0) {
for (int i = orders - 1; i >= 0; i--) {
       if (OrderSelect( i, SELECT_BY_POS, MODE_HISTORY) == FALSE) {
       Print("Error in history!");
       break;
       }
if (OrderSymbol() != Symbol() || OrderType() > OP_SELL) continue;
if (OrderProfit() > 0.0) break;
if (OrderProfit() < 0.0) losses++;
}
if ( losses > 1) lot = NormalizeDouble( lot - lot * losses / DecreaseFactor, 2);
}
if ( lot < 0.1) lot = 0.1;
if ( lot > 1000.0) lot = 1000;
return ( lot);}

int start(){//старт

LotsOptimized() -- вставьте в ticket=OrderSend(Symbol(),OP_BUY, LotsOptimized(),Ask,3, stop,Ask+ Takeprofit*Point,"", MagicNumber,0,Green);
 
前の2つの記事だけロットの段差が考慮されてないね。残念ながら。
 
Vinin >> :
前の2つの記事だけ、ロット変更のステップを考慮していない。>>残念ながら。

ステップを正しく理解すれば、残額がいくらロットに加算されるのか、できますか?

それとも、ロットの増加カーブを一定にするということなのでしょうか、そのような進行に意味があるとは思えません。

extern double balans = 500; //шаг баланса

lot = NormalizeDouble(AccountFreeMargin() * MaximumRisk / balans, 1);