10pipギャップでのオープンオーダー - ページ 4

 
    //datetime lastTime  = 0;
    double highest_open_price=0;
    //int      lastTicket = -1; // None open.
    int      highest_Ticket = -1; // None open.
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(0, SELECT_BY_POS,MODE_TRADES)                 // Only my orders w/
    &&  OrderMagicNumber()  == 0           // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    //&&  OrderOpenTime()     >=  lastTime
    &&  ?????????()     >=  highest_open_price
    ){
      highest_open_price= ????????();
      highest_Ticket = OrderTicket();
    }

やはり、単純な置き換え

 
GumRai:

私が言ったように - 単純な置換



ありがとう、GumRai: しかし、私のさらなる質問は、私は信じている?

ということなのですが、これをどのように私の取引ロジックで動作させればよいのでしょうか?




      
rsi1=iRSI(NULL,0,14,PRICE_CLOSE,1);
rsi2=iRSI(NULL,0,14,PRICE_CLOSE,0); 
     
 if(rsi2>70 && Ask > High[1] + (10*pips2dbl) )
  {
      Opn_S=true;
     } 
     else 
   if(rsi2>70 && Ask < High[1] + (10*pips2dbl)) 
      {
      Opn_S=false;
     }

 Here you give value to Opn_S, but you do nothing with it







   lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0,"My Comment",magic,0,Green);

ここでは、注文を開くための条件がなく、lastTicketの値を上書きしています。

あなたのコードにはロジックがなく、互いに全く関係のない3つのセクションのコードだけです。

===========================================================================================================================




HHH

なぜ私は尋ねるです私はこのように結果をアレンジした下のコード....それは私が望んでいたものになったが、問題はそれが一行で複数の注文を開くことです。

// Orders accounting 
   datetime lastTime  = 0;
    double highest_open_price=0;
    lastTicket = -1; // None open.
    int      highest_Ticket = -1; // None open.
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(0, SELECT_BY_POS,MODE_TRADES)                 // Only my orders w/
    &&  OrderMagicNumber()  == 0           // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    &&  OrderOpenTime()     >=  lastTime
    &&  OrderOpenTime()     >=  highest_open_price
    ){
      highest_open_price= OrderOpenTime();
      highest_Ticket = OrderTicket();
    }





        
 if(Bid > High[1] && OrderOpenTime()     > highest_open_price)
  {
      Opn_S=true;
     }   
CurrentTime= Time[1];





if(Opn_S==true)               // No opened orders +
        {                                       // criterion for opening Sell
         RefreshRates();                   // Refresh rates     
         lastTicket=OrderSend(Symbol(),OP_SELL,mylot(),Bid,0,0,0,"My Comment",magic,0,Red);
         if(lastTicket>0)
      
           {
            Comment("Opened order Sell ","#",lastTicket);
            return(0);                                 // Exit start()
           }
         if(Fun_Error(GetLastError())==1) // Processing errors
            continue;                             // Retrying
         return(0);                                   // Exit start()
        }
      break;                                    // Exit while
     }
//--------------------------------------------------------------- 9 --------------------------------------
   return(0);                                       // Exit start()
  }


 

あなたのコードは互いに関連性のない3つのセクションからなり、論理的ではありません。

私は、あなたが他のEAからコードのセクションをコピー&ペーストして、それらが一緒に動作することを望んでいると結論付けることができます。

"私は、"OrderOpenTime() "であると信じて います。

このループが何をするものなのか、あなたは知らないし、書いてもいないことを証明しています。

 

GumRai これは私のコード全体です。


{
   int cnt;
   int NumTrades;   // Number of buy and sell trades in this symbol
   
   NumTrades = 0;
   for (cnt = OrdersTotal()-1 ; cnt >=0 ; cnt--)
     {
     if(OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES)==true)
      if ( OrderSymbol() != Symbol()) continue;
      if ( OrderMagicNumber() != magic)  continue;
      
      if(OrderType() == OP_BUY )  NumTrades++;
      if(OrderType() == OP_SELL ) NumTrades++;
             
     }
    
  }




then getting my ea to work with my loop by just adding  if(NumTrades==0 && Opn_B==true) // No new orders +

this ensures my ea to open just 1 order on a giving chart but now i want to expand my ea to open more than one order i remove  NumTrades==0 

to let the ea open order unrestricted with my ordersend as little i know now i know we can loop through order for so many reason and when it comes
to the looping for highest order on the chart i dont know that well,but can do it if example is giving. please bear with my little coding knowledge and put me through

below is my ea please assist me 
 
ご回答をお待ちしております。
 

そのEAが単に書き方が悪いのか、不完全なのか、それともコードの塊が削除 された動作中のEAなのか、私にはよくわかりません。

主に売りを開くということですが、買いを開くことはできないようですね。

買いを開くための主な条件は

if(Opn_B==true)

コードの中でOpn_Bが登場する唯一の場所は、以下の通りです。

Opn_B=false

ということで、どこにもtrueに設定できるところはありません。

ちなみに

   while(true) // Orders closing loop

注文を開くだけのループ、素晴らしいコメントです。

   double highest_open_price=0;
   int    highest_Ticket=-1;
   for(int pos=OrdersTotal()-1; pos>=0; pos--)
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) // Only my orders w/
         && OrderMagicNumber()==0           // my magic number
         && OrderSymbol()==Symbol() // and my pair.
         && OrderOpenPrice()>=highest_open_price)
        {
         highest_open_price=OrderOpenPrice();
         highest_Ticket=OrderTicket();
        }
 
GumRai:

そのEAが単に書き方が悪いのか、不完全なのか、それともコードの塊が削除された動作中のEAなのか、私にはよくわかりません。

主に売りを開くということですが、買いを開くことはできないようですね。

買いを開くための主な条件は

コードの中でOpn_Bが登場する唯一の場所は、以下の通りです。

ということで、どこにもtrueに設定できるところはありません。

ちなみに

注文を開くだけのループ、素晴らしいコメントです。

私のコードを見て、推奨点や修正点を指摘していただき、ありがとうございます。

GumRai: だから、多くの人は理解できないかもしれないけれど、私は理解できるし、あなたはコードをよく理解しているから理解できると言ったんです。

さらに、私はeaのオープンを売りだけにした理由があります。この要求のために私のeaは荒れてしまいましたが、解決策が見つかったら、すべてをもう一度整理します。

EAを見てください。私は閉じる条件と買う条件を削除 しました。

.なぜかというと、私はこの条件を満たすことを確認したいからです。

現在のチャートのシンボルで最も高いオープンプライスと、買いならその10ピップ上、売りならその10ピップ下にオープンすること。

クローズ条件を外したのは、他の条件が適所に置かれる前に、コードが正しいことを確認するためのテスト中にバックテストで取引をクローズさせたくないからです。

解決策に到達したら、私は適切な閉鎖 条件で再び私のEAを整理するつもりですそれはあなたが助けているのに、この問題で私を助けるために求めている理由です。




 

さて、最も高いオープンプライスを 持つ注文を見つけるためのコードを提供しました。

あとは価格がこの値より10pips以上高いかどうかをチェックし、高い場合は別の注文を出すだけです。

 

ループはどのように すればいいのでしょうか?

highest_open_pricehighest_Ticket を使って、いくつかの条件を書きましたが、バックテストでは期待通りの結果は得られませんでした。

もしかしたら、何か見落としているのでしょうか?


  double highest_open_price=0;
   int    highest_Ticket=-1;
   for(int pos=OrdersTotal()-1; pos>=0; pos--)
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) // Only my orders w/
         && OrderMagicNumber()==0           // my magic number
         && OrderSymbol()==Symbol() // and my pair.
         && OrderOpenPrice()>=highest_open_price)
        {
         highest_open_price=OrderOpenPrice();
         highest_Ticket=OrderTicket();
        }
 
そうです、あなたはコードを表示するのを失念しています。あなたが何をしたのか、していないのか、どうやって知ることができるのでしょうか?
理由: