[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 527

 
Dimka-novitsek:
おはようございます。コンディションがうまくいかない

もう、ifeの文字列を見て、見て、見て、見て......。 何か理由があるに違いない、私が混乱して、単純で初歩的なことが見えていないのかもしれない、そういうこともあります。

朝から見ました。出て行った。戻ってきてもう一度見てみると、より簡単に、ifs、more、less...といった感じです。全く理解できない。



そして、これは私のスタートの下での話です。


p.s. すべてはこの戦略的条件のためです。

EMA-期間10が上から下へクロス EMA-期間200、CCIが上から下へ0.100または100をクロス、キャンドルがLMA-期間100を閉じるか下回る。


どのように、何が行われるかを示すために括弧を付ける

if( CCI_50S>100&&CCI_50<100 ||CCI_50S>0&&CCI_50<0|| CCI_50S>-100&&CCI_50<-100 )CCInapravlenie=true;
 
Chiripaha:

トレードの方向に合わせてフラグを立てました。条件:線と線の間の1つのゾーンに入れば買い、他のゾーンに入れば売りはしない。この工程を横線で規制しています。

その前に、露出したラインの価格を聞いています。そしてその後に、フラグに応じて、注文を出したり、閉じたりするブロックがあります。

コードは些細なことですが簡単です。でも...- 質問...

この設計が機能し始めると、売買値が予測不可能(カオス)になることが判明。なぜそうなるかというと、「if」関数と「end」「more/less」演算子には明確な条件があるからです。

つまり、プログラムは自分の都合で行動する。変数の値に何が書かれていても、買ったり売ったり、何もしなかったりする。

どのように、何を書けば、条件が整うのか、そして何より、その条件が整うのか。何が間違っていて、何が考慮されていないのか?(関数の条件に必要なことは全て記載したつもりです)。

また、このトピックには別の問題もあります。条件によって変数が変化する場合、Expert Advisor の設定(F7 でアクセスする場合)の値は、ユーザーが設定したものと同じになります。だから、これらの変数の現状を見ることができないのです。どうすれば、相手の価値観が現時点でわかるようになるのでしょうか?

まず、条件をグループ化することから始めます。

    extern bool    Покупать  = false;
    extern bool    Продавать = false; 

    if (pl > Ask) {if (Ask > psb || Ask > ps) Продавать = true;}
    else {if (pl < Bid) if (Bid < pcs || Bid < pb) Покупать = true;}
こうすればわかりやすいかも!?(コードの意味自体には触れていない)。
 

一見すると、条件ではなく、変数の話でしょう。コード自体は正常に見えるので、アラートで変数を出力することから始めます!

Alert(" pcb " , pcb ); Alert(" pl " , pl ); Alert(" pb " , pb );

 

ファイルへの書き込み 時にデータ形式を変更するには?

読めないフォントで書いている :(

 
TarasBY:

交換する。

のために。

そして、なぜ売り注文が(あなたのバリアントで)開くのか(私が以前に言ったことに基づいて)自分自身で答えを見つける!!!


インジケータからパラメータを呼び出す必要はないことがわかりました。すべてExpert Advisorに直接登録することができます。

自分のミスを分析する

iLowestと iHighestの関数で インジケータを書き直したのですが、このコードは正しいですか、それとももっと短くできますか?

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Red

extern int Quant_Bars = 5; //количество баров

//--- buffers
double Line_1[];     //объявление массивов под..
double Line_2[];     //..буферы индикаторов

int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);    //стиль линии
   SetIndexBuffer(0,Line_1);                    //назнач. массива буферу
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);    //стиль линии
   SetIndexBuffer(1,Line_2);                    //назнач. массива буферу
//----
   return(0);                                      
  }

int start()
  {                        
   double Minimum;
   double Maximum;
   int k;
   
   Maximum= High[iHighest(NULL,0,MODE_HIGH,Quant_Bars,1)];
   Minimum= Low[iLowest(NULL,0,MODE_LOW,Quant_Bars,1)];
   
   for(k=1; k<=Quant_Bars; k++)
      {
       Line_1[k]= Minimum;
       Line_2[k]= Maximum;
      }
    return(0);
    }
               
 
今は...兄がいるんです、長男が...。ブラケットが目詰まりしているだけでしょう。現在
 
Dimka-novitsek:

一見すると、条件ではなく、変数の話でしょう。コード自体は正常に見えるので、アラートで変数を出力することから始めます!

Alert(" pcb " , pcb ); Alert(" pl " , pl ); Alert(" pb " , pb );


すでに実行しました。すべての変数が正しく設定されています:価格とパラメータの両方が設定されています。
 
TarasBY:

まず、条件をグループ化することから始めます。

こうすればわかりやすいかも!?(コードの意味自体には触れていない)。


そのように設定すれば、別問題になります。もし、ラインより下にあれば、...そして、それが特定の線と線の間にあるとき、つまりその線の領域内にあるときが必要なのです。

 
Pacman:


インジケータからパラメータを呼び出す必要はないことがわかりました。全てはEAに直接登録することができます。

自分のミスが何なのか、考えなければならないだろう。

iLowestとiHighestの関数で私のインジケータを書き直しましたが、このコードは正しいですか、それとも切り捨てることができますか?

EAにインジケータを持ち込むと同時に、テスターで作業する際の「馬の犂(すき)」になってしまいます。あなたの場合、インジケーターは必要ありません。
 
Chiripaha:

そのように設定すれば、違うものになるはずです。もし、ラインより下にあれば、...そして、特定の線と線の間、つまりこの線の領域に入るときに欲しいのです。

すみません、括弧を見逃しました。原文を修正しました。