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

 
AlexeyVik:


そして、このコード

というように init() の中で書いた方がよいでしょう。

そして、start() で

買いストップに続き、価格の後ろにフラクタルがトレールし、同じ手順で売りストップが必要なんです。
 
xant:
質問を撤回します、自分で考えたんです。
デコンパイルするのは良くない。コードを完全に作り直すことをお勧めします
 
Petiyashaket:
私は、価格フラクタルによってトリガーされるまでトレール(修正)された買いストップと、同じ方法で売りストップを必要とします。

そこで、あなたのコードにある、赤くハイライトされた質問です。

if(Up>0&&Down==0&&Volume[0]<2)     //если верхний фрактал есть а нижнего нету и прошло не больше 2х тиков то:
    {
    if((High[3]+5*Point-Ask)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL)) //если расстояние 0 бара от хая фрактала позволяет то:
    OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green);//выставляем отложенный на покупку
    else {BS=High[3]+5*Point; Print("Виртуальный BS:",BS);} // а ели нет то запоминаем(позже будет добавлен вход с рынка)
        { // К чему относится эта скобка???
        for (int pos=0;pos==OrdersTotal();pos++)
        OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
        if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_BUYSTOP)
          {
          OrderModify(OrderTicket(),Up+5*Point,High[3]-sl,High[3]+tp,0,CLR_NONE);
          }
        } // это пара к той...
     
       }  

まだ答えていませんね。コード実行の結果が変わってしまうので、どうしたらいいのかわからない。

 
AlexeyVik:

そこで、あなたのコードにある、赤くハイライトされた質問です。

まだ答えていませんね。そして、このことから、コードの実行結果が異なってくる。

Volume[0]<2という 条件になっているのはなぜですか?

1つのダニに何匹もいることもあります。そして、このバーでは、もうコンディションが効かない。

 
Vinin:

Volume[0]< 2を条件にしているのはなぜですか?

1つのダニに何匹もいることもある。そして、このバーでは、コンディションはもう機能しません。

ビクター、この質問は私のためにあるのではありません。この機能を使っています。

bool NewBar()
{
   static datetime lastbar = iTime(_Symbol, PERIOD_H1, 0); // Период можно менять по желанию
   datetime curbar = iTime(_Symbol, PERIOD_H1, 0);         // и будет отсчитывать новый бар заданного периода на любом ТФ
   if(lastbar != curbar)
    {
     lastbar = curbar;
     return (true);
    }
   else return(false);
}//******************************************************************|

ブラケットについての質問をするために、コードの一部をコピーしました。

 
Vinin:

Volume[0]< 2を条件にしているのはなぜですか?

1つのダニに何匹もいることもある。そして、このバーでは、コンディションはもう機能しません。

これは、Oleg RemizovがYouTubeで教えているもので、この条件により、ニュースでの取引と損失の捕捉を制限することができます :)
 
Petiyashaket:
これはOleg RemizovがYouTubeで教えていることで、この条件ではニュースでの取引や大鹿の捕獲が制限されます :)。
レミゾフについては、何も言うことはありません。しかし、あなたのコードがバーを見逃しても、怒らないでください。すべての権利、あなたが分コードを持っている場合(どのような時間枠で、もちろん)、しかし、あなたが時間以上に実行しようとしている場合 - あなたのための唯一の同情があるでしょう。
 
AlexeyVik:

そこで、あなたのコードにある、赤くハイライトされた質問です。

は一度も回答していない。そうすると、コード実行の結果も違ってきますしね。

括弧をいろいろな方法で実験し、削除したり追加したりしましたが、結果は同じです。
 
Petiyashaket:
私は、さまざまな方法でブラケットを実験し、削除したり追加したりしましたが、結果は同じです。

実験する必要はなく、この括弧の意味を理解し、どのように適用するかを考える必要があります。ドキュメントに書いてあるんだから、講釈は読まないよ。

if(Up>0&&Down==0&&Volume[0]<2)     //если верхний фрактал есть а нижнего нету и прошло не больше 2х тиков то:
    {
    if((High[3]+5*Point-Ask)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL)) //если расстояние 0 бара от хая фрактала позволяет то:
    OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green);//выставляем отложенный на покупку
    else {BS=High[3]+5*Point; Print("Виртуальный BS:",BS);} // а ели нет то запоминаем(позже будет добавлен вход с рынка)

        for (int pos=0;pos==OrdersTotal();pos++)
        { // наверное сюда её надо
        OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
        if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_BUYSTOP)
          {
          OrderModify(OrderTicket(),Up+5*Point,High[3]-sl,High[3]+tp,0,CLR_NONE);
          }
        } // это пара к той...
     
       }  
しかし、これはコードの一部に過ぎません。さらにその先にも、同様の問題がある。
 
//+------------------------------------------------------------------+
//|                                                   Strategy 3.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+

#property copyright ""
#property link      ""
#include <Library1.mqh>
extern int Magic=111;
extern int TP=20;
extern int SL=30;
extern int Trall_dist=10;
extern int Shag=10;
extern bool Isp_shag=false;
extern bool Isp_bezubitok=false;
extern double Lot=0.1;
double SS=0,BS=0;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  double tp,sl;
  if(Digits==3||Digits==5) {tp=TP*10*Point;sl=SL*10*Point;}
  else if(Digits==2||Digits==4) {tp=TP*Point;sl=SL*Point;}
  double Up=iFractals(Symbol(),0,MODE_UPPER,3);
  double Down=iFractals(Symbol(),0,MODE_LOWER,3);
//----
  if(Up>0&&Down==0&&Volume[0]<2)
    {
    if((High[3]+5*Point-Ask)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL))
    OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green);
 //----   
    for (int pos=0;pos==OrdersTotal();pos++)
        {
        OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
        if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_BUYSTOP)
          {
          OrderModify(OrderTicket(),High[3]+5*Point,High[3]-sl,High[3]+tp,0,CLR_NONE);
          }
        } 
    } 
  else if(Up==0&&Down>0&&Volume[0]<2)
    {
    if((Bid-Low[3]-5*Point)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL))
    OrderSend(Symbol(),OP_SELLSTOP,Lot,Low[3]-5*Point,20,Low[3]+sl,Low[3]-tp,NULL,Magic,0,Red);
    for (pos=0;pos==OrdersTotal();pos++)
        {
        OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
        if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_SELLSTOP)
          {
          OrderModify(OrderTicket(),Low[3]-5*Point,Low[3]+sl,Low[3]-tp,0,CLR_NONE);
          }      
        }     
    }    
   
            
    if(OrdersTotal()>0)
    Trailing_stop(Magic,Symbol(),Trall_dist,Shag,Isp_shag,Isp_bezubitok);
    return(0);
  }
//+------------------------------------------------------------------+
前回のコードのように、一行のコードで、コメント付きで説明していただけると、とてもありがたいのですが。