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

 

そのアイデアの要点をお伝えします。

現在のバーから履歴の最初の矢印を見つけるか、特定する必要があります。

上か下かは関係ありません。

(A)そして、この発見を変数やフラグに保存しておくのです。例えば、GlobalFlag =-1 (矢印が下向きの場合)、上向きの場合は+1です。

その後、価格はさらに前進し、いくつかの矢印が再び描かれています。

EAでは、毎回新しいティックでサーチサイクルが開始されますね。

再びループが開始され、先ほど描かれた矢印を見つけ出し、変数やフラグに保存する、つまり

すなわち、項目Aが実行された。

そういうことです。

なんでわざわざ国旗とかにするんだ?

そして、このフラグ、つまり矢印が見ている場所を、別のインジケータを使ってシグナルを確認することになります。

例えば、GlobalFlag=+1(矢印が上向き)で、他の指標が上向きシグナルを発している場合、エントリーすべき ことを意味します。

つまり、指標において両者の条件が重なることが望ましい。


このコードはいかがでしょうか?

つまり、どのローソクに矢印があるか、どのような価格があるかなどを計算する必要はない。

主に、矢印の有無と方向を固定することです。

1と-1の代わりにtrueとfalceを割り当てることは可能ですか?


double DataIndUP, DataIndDN;
int    i, GlobalFlag, nBars = 250 ;  // nBars = количество проверяемых баров вглубь истории

for (i=0; i<nBars; i++) 
{
   DataIndUP = iCustom(Symbol(),Period(),"Имя индюшонка", через запятую все параметры индюка , номер буфера стрелки вверх, i)
   DataIndDN = iCustom(Symbol(),Period(),"Имя индюшонка", через запятую все параметры индюка , номер буфера стрелки вниз, i)
   if (DataIndUP !=EMPTY_VALUE)     // или if (DataIndUP !=0) // найдена стрелка вверх
                                    // всё зависит от того, что выдаёт буфер при отсутствии стрелки 
                                    // нажмите Ctrl+D и посмотрите что вам в окне данных будет показано
      GlobalFlag=+1                 // присвоение значения +1(стрелка вверх)  переменной 
      Break;                        //выход из цикла, так как  нашлась последняя стрелка
if (DataIndDN !=EMPTY_VALUE)     // или if (DataIndDN !=0) // найдена стрелка вниз
                                    // всё зависит от того, что выдаёт буфер при отсутствии стрелки 
                                    // нажмите Ctrl+D и посмотрите что вам в окне данных будет показано
      GlobalFlag=-1                 // присвоение значения -1(стрелка вниз) переменной
      Break;                        //выход из цикла, так как  нашлась последняя стрелка
}
 
Tupen:


それがスタートです。


つまり、エントリーポイントA--売りと買いが4pipsで成立しています。1つの行動のバリエーション - 価格が下がる - 我々は、エントリポイントから、例えば、5ポイントで利益を修正します。- 価格が上がれば、利益を確定するまでのポイント数も変わります(今のところ最小値)。 つまり、プログラムは一度に4つの注文を出さなければなりません、))プログラムすることは可能ですか?
 
Roman.:



卑猥な表現があるため、投稿を削除しました。

 
Vinin:

卑猥な表現があるため、投稿を削除しました。


ごめんね、ゆとりちゃん、どうしようもなくて。ウィーンの森の物語にうんざりしている...。
 

4つの注文でプログラムを書いてください。デモを見て、反転を見る必要があります。

 
Tupen:

デモを見て、ピボットのオプションがわかるかどうか確認したいのですが、4つの注文でプログラムを書いてください。


アバランチ」のスレッドをご覧ください。そこでは、逆転の発想も含めて「すべて」が徹底的に考え抜かれているのです。

車輪を再発明する必要はありません。すべてのものは、はるか昔に人が発明したものです。読む、分析する、使う、活かす。

すぐに "それ "の自転車(解決策と読める)にたどり着けない...。

 

なぜ周期性がないのか、教えてください。テスターでは、Expert Advisorは2つの取引しか開きません。

extern int F = 8; //高速МАの周期
extern int S = 20; //スローMAの周期
extern double Lots = 0.1; // 注文ロット
int Slippage = 5; // スリッページをpipsで表示。
int Magic = 123; //Expert Advisorのマジックナンバー
int ticketsell;
int ticketbuy;
int start()
{
double MAfast = iMA(NULL,0,F,0,MODE_SMA,PRICE_CLOSE,1);
double MAslow = iMA(NULL,0,S,0,MODE_SMA,PRICE_CLOSE,1);
// ターミナルにticketellの注文がないorクローズしており、かつ高速MAが低速MAより低い場合、売り !
if ( (OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast < MAslow )
{
// すでに反対の注文である買いが入っている場合は、それを閉じましょう.
if ( OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == true )
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage,CLR_NONE);
オーダー送信(シンボル()、OP_SELL、ロット、ビッド、スリッページ、0、0、マジック、0、赤)
}
if ( (OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast > MAslow )
{
if ( OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == true )
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, CLR_NONE);
ticketbuy = OrderSend(Symbol(,OP_BUY,Lots,Ask,Slippage,0,0,Magic,0,BLUE)。
}
return(0)です。
}

 

Mirgha これを試してみてください

extern int F = 8; //период быстрой МА
extern int S = 20; //период медл.МА
extern double Lots = 0.1; // лот ордера
int Slippage = 5; // проскальзывание в пп.
int Magic = 123; // магический номер эксперта
int ticketsell;  
int ticketbuy;

int start()
{
   double MAfast = iMA(NULL,0,F,0,MODE_SMA,PRICE_CLOSE,1);
   double MAslow = iMA(NULL,0,S,0,MODE_SMA,PRICE_CLOSE,1); 
   
   ticketsell = -1;
   ticketbuy = -1;
   for (int i = 0; i < OrdersTotal(); i++)
   {
      OrderSelect( i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
      {
         if (OrderType() == OP_SELL) ticketsell = OrderTicket();
         if (OrderType() == OP_BUY)  ticketbuy  = OrderTicket();
      }
    }
   // ордера с тикетом ticketsell в терминале нету ИЛИ он закрылся И быстрая МА ниже медленной, продаем !
   if ( (OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast < MAslow )
   {
      // если у нас при этом был противоположный ордер, бай, его закроем :
      if ( OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == true )
         OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, CLR_NONE);
      ticketsell = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,0,Magic,0,Red);
   } 
   if ( (OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast > MAslow )
   {
      if ( OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == true )
         OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, CLR_NONE);
      ticketbuy = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,0,Magic,0,Blue);
   }
   return(0);
} 
 
ありがとうございました。
 

私の疑問は解決されないままです。

それでも、インジケータからの受信信号の数をフィルタリングするにはどうしたらよいでしょうか。例えば、Expert Advisorは3番目のシグナルを受け入れて動作を開始します。つまり、最初の2つのシグナルはスキップされ、3番目のシグナルが動作のために受け入れられます。上に書いたように、グローバル 変数で実装しようとしたのですが、うまくいきません・・・。