どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 811

 

ここでは、保留中の注文を 配置し、その価格を直前のバーの終値と比較して計算する必要があります。BUYSTOPが置かれ、SELLSTOPはエラー130を返します。このコードに間違いはないでしょうか?あるいは別の機能で。

void SetOrders() {

double ldStop=0, ldTake=0;
int spr=MarketInfo(Symbol(), MODE_SPREAD);
double PredBar=iClose(NULL,PERIOD_M5,1);
double pAsk=PredBar+(DistanceSet+spr)*Point;
double pBid=PredBar-(DistanceSet+spr)*Point;

if (!ExistOrder(1)){
if (StopLoss!=0) ldStop=pAsk-StopLoss*Point;
if (TakeProfit!=0) ldTake=pAsk+TakeProfit*Point;
SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake, 1);
}
if (!ExistOrder(2)){
if (StopLoss!=0) ldStop=PredBar+(StopLoss*Point);
if (TakeProfit!=0) ldTake=pBid-TakeProfit*Point;
SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake, 2);
}
}
 
Pomid:

ここでは、保留中の注文を配置し、その価格を直前のバーの終値と比較して計算する必要があります。BUYSTOPが置かれ、SELLSTOPはエラー130を返します。このコードに間違いはないでしょうか?あるいは別の機能で。

void SetOrders() {

  double ldStop=0, ldTake=0;
  int    spr=MarketInfo(Symbol(), MODE_SPREAD);
  double PredBar=iClose(NULL,PERIOD_M5,1);
  double pAsk=PredBar+(DistanceSet+spr)*Point;
  double pBid=PredBar-(DistanceSet+spr)*Point;

  if (!ExistOrder(1)) {
    if (StopLoss!=0) ldStop=pAsk-StopLoss*Point;
    if (TakeProfit!=0) ldTake=pAsk+TakeProfit*Point;
    SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake, 1);
  }
  if (!ExistOrder(2)) {
    if (StopLoss!=0) ldStop=PredBar+(StopLoss*Point);
    if (TakeProfit!=0) ldTake=pBid-TakeProfit*Point;
    SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake, 2);
  }
}

なぜ作者に声をかけないのか?まだ生きている!若い!年寄りじゃない!?座標は各関数の上のコードにあります!誰もが彼を知っていて、尊敬しています

そして、このようなコードを挿入する方法を、SRCで学びましょう!

void SetOrders() {

  double ldStop=0, ldTake=0;
  int    spr=MarketInfo(Symbol(), MODE_SPREAD);
  double PredBar=iClose(NULL,PERIOD_M5,1);
  double pAsk=PredBar+(DistanceSet+spr)*Point;
  double pBid=PredBar-(DistanceSet+spr)*Point;

  if (!ExistOrder(1)) {
    if (StopLoss!=0) ldStop=pAsk-StopLoss*Point;
    if (TakeProfit!=0) ldTake=pAsk+TakeProfit*Point;
    SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake, 1);
  }
  if (!ExistOrder(2)) {
    if (StopLoss!=0) ldStop=PredBar+(StopLoss*Point);
    if (TakeProfit!=0) ldTake=pBid-TakeProfit*Point;
    SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake, 2);
  }
}

PredBarを理解しないままいじくり回した結果がこれだ!まずは数学を学ぼう

 
こんばんは、新しいビルドでインジケータが動作しない問題の解決方法を教えてください。コンパイルすると、エラー'TotalOrders' - illegal switch expression type が発生します(エラーはコード 内でハイライトされています) アレクサンダー
 for (i=0; i<k; i++)
   {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
    {
      if ((OrderSymbol()==Symb) && (OrderType()==op))
        {
            ko++;
            TotalOrders[ChartListPosition+1][ko][1]=NormalizeDouble(OrderOpenPrice(),dig);
            TotalOrders[ChartListPosition+1][ko][2]=NormalizeDouble(OrderStopLoss(),dig);
            TotalOrders[ChartListPosition+1][ko][3]=NormalizeDouble(OrderTakeProfit(),dig);
            TotalOrders[ChartListPosition+1][ko][4]=OrderTicket();
            TotalOrders[ChartListPosition+1][ko][5]=OrderLots();
            TotalOrders[ChartListPosition+1][ko][6]=OrderType();
            TotalOrders[ChartListPosition+1][ko][7]=OrderMagicNumber();
            TotalOrders[ChartListPosition+1][0][0]=ko;
           
              switch(TotalOrders[ChartListPosition+1][ko][6])
              {
               case OP_BUY:
                        Type="Buy";
                break;
                
               case OP_BUYSTOP:
                        Type="Buy Stop";

 for(int j=1;j<=OrdersCount;j++)  
      {
       
         switch(TotalOrders[ChartsListPosition+1][j][6])
          {
           case OP_SELL: 
               if (TotalOrders[ChartsListPosition+1][j][2]!=0 && 
                   ask>=(TotalOrders[ChartsListPosition+1][j][2]-NormalizeDouble(StopLevel*point,dig)))  
                   {
                    test=StopLossColor;
                   } 
                   else
                   {
                   if (TotalOrders[ChartsListPosition+1][j][3]!=0 && 
                       ask<=(TotalOrders[ChartsListPosition+1][j][3]+NormalizeDouble(StopLevel*point,dig)))
                      {
                       test=TakeProfitColor;
                      }
                   }
             break;       
 
karwin:
こんばんは、新しいビルドでインジケータが動作しない問題の解決方法を教えてください。コンパイルすると、エラー'TotalOrders' - illegal switch expression type が発生します (エラーはコード内でハイライトされています) アレクサンダー

変数はそこにあるべきで、他のものではありません。

              int Переменная=TotalOrders[ChartListPosition+1][ko][6];
              switch(Переменная)
              {
               case OP_BUY:
                        Type="Buy";
                break;
                
               case OP_BUYSTOP:
                        Type="Buy Stop";
 

こんにちは、同志の皆さん。

MT5にはあまり詳しくなく、ほとんど使ったことがないのですが、テスト中にCPUコアが1つしか作動していないのですが、なぜでしょうか?どうすれば直るのか?


 
7Konstantin7:

こんにちは、同志の皆さん。

MT5にはあまり詳しくなく、ほとんど使ったことがないのですが、テスト中にCPUコアが1つしか作動していないのですが、なぜでしょうか?どうすれば直るのか?


第5回フォーラムで質問するべし
 
7Konstantin7:

こんにちは、同志の皆さん。

MT5にはあまり詳しくなく、ほとんど使ったことがないのですが、テスト中にCPUコアが1つしか作動していないのですが、なぜでしょうか?どうすれば直るのか?


テスト用なのか、最適化用なのか。テストだけの場合、1つのコアが動作しますが、ストラテジーテスターで「最適化」オプションを有効にすると、プロセッサのすべてのコアが動作します。
 
borilunad:

よくわからないままPredBarをいじった、その結果がこれだ!まずは計算を覚えよう

ありがとうございます、勉強になりました、訂正します。
 
evillive:
5番目のフォーラムで質問してください。

"サイト会員 "ではないので、ここで質問させていただきました。

barabashkakvn:
それはテスト中ですか、それとも最適化中ですか?1つのコアが動作しますが、戦略テスターで「最適化」オプションをオンにすると、プロセッサのすべてのコアが実行されます - あなただけのテストの場合。

テストでは、1つのコアが動作し、すべてが正常に動作しています。

なぜ、テストでプロセッサーの能力をフルに発揮させなかったのか、理解できない。

 
7Konstantin7:

"サイト会員 "ではないので、ここで質問させていただきました。

テストでは、1つのコアが動作し、すべてが正常に動作しています。

テストでプロセッサーのパワーを使い切らないというのは、理解できません。

また、なぜテスト時に(最適化をオンにしていない)全コアに負荷をかける必要があるのでしょうか?結局のところ、可視化でテストする場合は、急ぐことはありませんし、可視化せずにテストする場合 - ので、現代のコンピュータは、シングルコアでひまわりの種のように、このタスクを実行します。