[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 212

 

さて、関数から何が返されるかは不明です。

return(OrdOpenTimeBuy);

 
Roger:

さて、関数から何が返されるかは不明です。

return(OrdOpenTimeBuy);

良くなっているのでしょうか?

//=========== OrdTimeBuy_b(int MAGIC) ===============================================================
//  Функция возвращает время открытия последнего рыночного Buy-ордера, принадлежащего MAGIC или 777 
//---------------------------------------------------------------------------------------------------
datetime OrdTimeBuy_b(int MAGIC)
 {
  string SMB=Symbol();
  datetime OrdOpenTimeBuy=0;
  int i;
  for(i=0;i<OrdersTotal();i++)
   {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
     {
      if(OrderSymbol()==SMB)
       {
        if(OrderMagicNumber()==MAGIC || OrderMagicNumber()==777)
         {
          if(OrderType()==OP_BUY)
           {
            if(OrdOpenTimeBuy<OrderOpenTime())
             {
              OrdOpenTimeBuy=OrderOpenTime();
             }  
           }  
         }  
       }          
     }
   }
   if(OrdOpenTimeBuy==0) return(0);
   return(OrdOpenTimeBuy);
 }
//=====================================================================================================


//===========  Локальная низинка  =================================================================
  double LowestPoint_b(int MAGIC)
   {  
    datetime OrdOpenTimeBuy=OrdTimeBuy_b(MAGIC);  
    int ShiftBuy=0;
    double LowestPoint=0;
    if (OrdOpenTimeBuy!=0)
     {  
      ShiftBuy=iBarShift(NULL,PERIOD_M1,OrdOpenTimeBuy,true);
      LowestPoint=iLow(NULL,PERIOD_M1,iLowest(NULL,PERIOD_M1,MODE_LOW,ShiftBuy,0));
     } 
    return(LowestPoint);
   }  
//=================================================================================================
 
nemo811:

その方がいいのか?


ああ、それでいい。
 
Roger:
セルゲイ

ありがとうございます。

これらのエラーを修正しましたが、EAはまだ不具合があります。これからも掘り続けよう :)

 
nemo811:

ありがとうございます。

これらのエラーを修正しましたが、EAはまだ不具合があります。これからも掘り続けます :)


metaeditor.exeファイルが削除されたので、手動でエラーチェックをしているのでは?

EAなら間違いなく動かない。コードにstart 関数がない。

 

頭の中がぐちゃぐちゃになっちゃった。

こんなコードを書きました。

  RefreshRates();
  bool ticket2=false;
  if(st_TrStop>0 && SchSellStop777_b()>0) {
   double LowestPoint=LowestPoint_b(MAGIC);
   double ee=0;
   for (i=OrdersTotal()-1;i>=0;i--) {//Начало цикла
    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError(i);}
    else{//начало работы с выбранным ордером
     if(OrderSymbol()==SMB && OrderMagicNumber()==MAGIC) {
     if(OrderType()==OP_BUY) {//находится вверху, едет вниз  
     Last_OrderOpBuy(MAGIC);
     if(((Ask-(st_BU+ad.Spred+1)*Point)>=OrderOpenPrice()) ||
        ((Ask-(st_TrStop-1-ad.Spred)*Point)>=LowestPoint)) {

     if((Ask-(st_BU+ad.Spred+1)*Point)>=OrderOpenPrice())
      {
       Price_SS=NormalizeDouble(OrderOpenPrice()+(ad.Spred+1)*Point,Digits);
      }
     else
      { 
       Price_SS=NormalizeDouble(LowestPoint-1*Point,Digits);     
      }  

     if(ChastZakr)
      {
       if(SchBuy>1)
        {  
         OrderClose(OrdTicketBuy,OrderLots(),MarketInfo(OrderSymbol(), MODE_BID),Proskalz,CLR_NONE);
         Alert(SMB,": произведено частичное закрытие Buy-позиции, тикет: ",OrdTicketBuy,".");
         ee=SchBuyLots-OrderLots();
        }   
       else
        {  
         if(SchBuyLots+SchBuyLots777>MinLot)
          { 
           OrderClose(OrdTicketBuy,NormalizeDouble(OrderLots()/2,2),MarketInfo(OrderSymbol(), MODE_BID),Proskalz,CLR_NONE);
           Alert(SMB,": произведено частичное закрытие Buy-ордера, тикет: ",OrdTicketBuy,".");
           ee=SchBuyLots-NormalizeDouble(OrderLots()/2,2);
          }  
        }  
      }
     else
      {   
       ee=SchBuyLots;
      }

      DeleteOtlozhMAGIC(MAGIC);
      DeleteOtlozh777();
      ticket2=OrderSend(Symbol(),OP_SELLSTOP,ee,Price_SS,Proskalz,0,0,"MAGIC_" + MAGIC,MAGIC,0);
        if(ticket2!=0 && ticket2!=-1) {
          Alert (SMB,": установлен траловый SellStop.");
          Print(SMB,": установлен траловый SellStop.");
         }
        if(ticket2==0 || ticket2==-1) {
          GLE=GetLastError();
          ED=ErrorDescription(GLE);
          Alert (SMB,": ошибка №",GLE," установки тралового SellStop.");
          Alert (SMB,": описание ошибки - ",ED);
          Print (SMB,": ошибка №",GLE," установки тралового SellStop."); 
          Print (SMB,": описание ошибки - ",ED);
         }
       }       
      }       
     }  
    }  
   }  
  }
 

不具合がある。でも、条件に具体的な数字を入れると...。

     if(((Ask-(st_BU+ad.Spred+1)*Point)>=OrderOpenPrice()) ||
        ((Ask-(st_TrStop-1-ad.Spred)*Point)>=LowestPoint)) {

...LowestPointの代わりに、すべてが時計のように正確に動作します。

LowestPointの探し方は、上の投稿に書いてあります。

掘って2日目なんですが、よろしくお願いします。

ありがとうございました。

 
sergeev:

metaeditor.exeファイルが削除され、手動でエラーチェックをしているのでは?

もしこれがEAであれば、間違いなく動作しません。 あなたのコードにはstart 関数がないのです。

とても几帳面な方ですが、その点でも感謝しています。

コードの気になる部分だけ表示しています。EAを丸ごと投稿すると、質問がわからなくなる可能性があります :)

ありがとうございます。

 
1で値を確認しない
ShiftBuy
 
MESSAGE, MACDのみihighestの ような機能はないのでしょうか?
 
CLAIN:
MESSAGE, MACDにのみihighestのような関数があるのでしょうか?

私は出会っていませんが、書くことは可能です・・・。これは、現在のものを除いた過去10バーの主線の最大値程度となる。

double Hi ()
{ int i,j; H=0;
while (i<=10)
{if (H<iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1)) 
H=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1);
i++;}
return(H);
}
理由: