初心者を助ける - 曜日と時刻の機能 - ページ 3

 

申し訳ありませんabstract_mind


コードの形式が、上記のようにここに正しい方法で表示されないのです。

 
EagleEye:

では、どのようなコードにすればよいのでしょうか?

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()

// oneliner start
bool sunday_cond = (TimeDayOfWeek(TimeCurrent())==0) && (Hour()>=23);
bool monday_cond = (TimeDayOfWeek(TimeCurrent())==1) && (Hour()<=15);
bool mytradeallowed = false;
if   (
       (OrdersTotal()==0)
        &&
       ( sunday_cond || monday_cond )
     )
      {
       mytradeallowed = true;  
      }


if (Bars<100 || IsTradeAllowed()==false || mytradeallowed==false){ return;}
// oneliner end

if( CalculateCurrentOrders(Symbol())==0) CheckForOpen();

夜遅くに何か見落としていなければいいのですが。

条件を1行にまとめることができるのは知っていますが、他のメンバーにも投稿してもらいたかったのです 笑

確かに、この方法(より多くの別々の行)だと、少なくとも初心者にはより理解しやすいですね。

// oneliner start
if (
     (Bars<100 || IsTradeAllowed()==false)
     || 
     (
      ( 
       (TimeDayOfWeek(TimeCurrent())==0) && (Hour()>=23)
       ||
       (TimeDayOfWeek(TimeCurrent())==1) && (Hour()<=15)
      )
      (OrdersTotal()==0)  
     )
    ) 
   { return;}
// oneliner end

//now in one line, i coulndt resist LOL
if ((Bars<100 || IsTradeAllowed()==false)||(((TimeDayOfWeek(TimeCurrent())==0) && (Hour()>=23)|| (TimeDayOfWeek(TimeCurrent())==1) && (Hour()<=15))(OrdersTotal()==0))){ return;}
 
meikel:

夜遅くに何か見逃していなければいいのですが。

私は条件が1行にパックすることができることを知っているが、私は他のメンバーにもいくつかの書き込みをさせたかった笑

meikelさんありがとうございます。


まだエラーが出ます。


'bool' - semicolon expected Z:\ForexTradingGabEA_From MikeGAPeaOnlySunday.mq4 (86, 1)
'(' - initialization expected Z:\ForexTrading﹑From MikeGAPeaOnlySunday.mq4 (86, 20)
'TimeDayOfWeek' - comma or semicolon expected Z:\ForexTradingTradingGabEA_From MikeGAPeaOnlySunday.mq4 (86, 21)
')' - unbalanced right parenthesis Z:\ForexTradingThreeGabEA_From MikeGAPeaOnlySunday.mq4 (86, 52)
')' - unbalanced right parenthesis Z:\ForexTradingThreeGabEA_From MikeGAPeaOnlySunday.mq4 (86, 68)
'(' - initialization expected Z:\ForexTradingTempteeGabEA_From MikeGAPeaOnlySunday.mq4 (87, 20)
'TimeDayOfWeek' - comma or semicolon expected Z:\ForexTradingTradingGabEA_From MikeGAPeaOnlySunday.mq4 (87, 21)
')' - unbalanced right parenthesis Z:\ForexTradingThreeGabEA_From MikeGAPeaOnlySunday.mq4 (87, 48)
')' - unbalanced right parenthesis Z:\ForexTrading ◇From MikeGAPeaOnlySunday.mq4 (87, 52)
と続き、')' - アンバランスな右括弧が続きます。

 
フルコードでなければ、これ以上できることはない。
 
meikel:
完全なコードがなければ、私たちのためにできることはもう何もありません。

コードの全文はこちらです。



//+------------------------------------------------------------------+
//|                                                        GAPea.mq4 |
//+------------------------------------------------------------------+

extern double    Lots = 1;
extern int       iTakeProfit=10000;
extern int       iStopLoss=1000;
extern int       iTrailingStop=100;
extern int       min_gapsize=20;
extern int       MagicNumber=13;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
{
//----
   
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }  

//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys=0, sells=0;

   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect( i, SELECT_BY_POS, MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }

   if( buys>0) return( buys);
   else       return(- sells);
  } 


//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {

   double current_openprice=iOpen(Symbol(), PERIOD_M15, 0);
   double previous_highprice=iHigh(Symbol(), PERIOD_M15, 1);
   double previous_lowprice=iLow(Symbol(), PERIOD_M15, 1);
   double point_gap=MarketInfo(Symbol(), MODE_POINT);
   int spread_gap=MarketInfo(Symbol(), MODE_SPREAD);
   datetime current_time=iTime(Symbol(), PERIOD_M15, 0);
   

   if( current_openprice > previous_highprice + ( min_gapsize + spread_gap)* point_gap )
      {
      OrderSend(Symbol(),OP_SELL, Lots,Bid,3,Bid+ iStopLoss*Point,Bid- iTakeProfit*Point,"Sell#", MagicNumber,0,Red);
      }

    if( current_openprice < previous_lowprice - ( min_gapsize + spread_gap)* point_gap )
      {
      OrderSend(Symbol(),OP_BUY, Lots,Ask,3,Ask- iStopLoss*Point,Ask+ iTakeProfit*Point,"Buy#", MagicNumber,0,Green);
      }
   return;
}

Continues below (text to long)
 
EagleEye:

コードの全文はこちらです。



残りのコード


//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()

bool sunday_cond = (TimeDayOfWeek(TimeCurrent())==0) && (Hour()>=23);
bool monday_cond = (TimeDayOfWeek(TimeCurrent())==1) && (Hour()<=15);
bool mytradeallowed = false;
if (
     (Bars<100 || IsTradeAllowed()==false)
     || 
     (
      ( 
       (TimeDayOfWeek(TimeCurrent())==0) && (Hour()>=23)
       ||
       (TimeDayOfWeek(TimeCurrent())==1) && (Hour()<=15)
      )
      (OrdersTotal()==0)  
     )
    ) 
   { return;}

   if( CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   
   if ( CalculateCurrentOrders(Symbol()) != 0)
   {
      if(OrderType()==OP_BUY)
      {
         if(Bid-OrderOpenPrice()>Point* iTrailingStop)
         {
            if(OrderStopLoss()<Bid-Point* iTrailingStop)
            {
               OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point* iTrailingStop,OrderTakeProfit(),0,Blue);
            }
         }
      }
      if(OrderType()==OP_SELL)
      {
         if(OrderOpenPrice()-Ask > Point* iTrailingStop)
         {
            if(OrderStopLoss() > Ask+Point* iTrailingStop)
            {
               OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point* iTrailingStop,OrderTakeProfit(),0,Blue);
            }
         }
      }
   }

//----
    Comment("GAPea v1\n",
            ".................................\n",
            "FX Acc Server:",AccountServer(),"\n",
            "Date: ",Month(),"-",Day(),"-",Year()," Server Time: ",Hour(),":",Minute(),":",Seconds(),"\n",
            "Minimum Lot Sizing: ",MarketInfo(Symbol(),MODE_MINLOT),"\n",
            "Account Balance:  $",AccountBalance(),"\n",
            "Symbol: ", Symbol(),"\n",
            "Price:  ",NormalizeDouble(Bid,4),"\n",
            "Pip Spread:  ",MarketInfo("EURUSD",MODE_SPREAD),"\n",
            "...............................","\n",
            "Lots=" + Lots,"\n",
            "TakeProfit=" + iTakeProfit,"\n",
            "StopLoss=" + iStopLoss,"\n",
            "TrailingStop=" + iTrailingStop,"\n",
            "MagicNumber=" + MagicNumber,"\n");
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

解決済み

最初のエラー、括弧の欠落

int start()
{ // <- this one, i have overseen this in the first posts
bool


2番目のエラー、&&の欠落(私のコード 笑

if (
     (Bars<100 || IsTradeAllowed()==false)
     || 
     (
      ( 
       (TimeDayOfWeek(TimeCurrent())==0) && (Hour()>=23)
       ||
       (TimeDayOfWeek(TimeCurrent())==1) && (Hour()<=15)
      )
      && /// <- i have forgot this
      (OrdersTotal()==0)  
     )
    ) 
   { return;}

エラーなし、警告なし

私はあまり頻繁にこれを行うことはありませんが、今日のテレビはひどいですので、私は娯楽としてこのスレッドと謎を使用する

ファイル:
debug.mq4  5 kb
 
meikel:

解決済み

最初のエラー、括弧の欠落


2つ目のエラー、&&の欠落 (私のコード 笑)

エラーなし、警告なし



meikel....それは動作します!私は「エラーなし」を意味します:)


今私はそれが動作するかどうかを確認するために、日曜日にそれをテストする必要があります。


あなたの助けをありがとうございました。


日曜日以降にまたお知らせします。

 
EagleEye:

meikelさん......。うまくいきました!つまり、「エラーなし」です :)


今、私はそれが動作するかどうかを確認するために、日曜日にそれをテストする必要があります。


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


日曜日以降にお知らせします。

あなたは今、または明日、単に曜日と時間の値を変更して、それをテストすることができます....

 
meikel:

今すぐ、あるいは明日、曜日と時間の値を変更するだけでテストできます ...

今、私がテストできる唯一のことは、EAがb 4を行うために使用されるように、週の間に取引されていないことです。


そして、日曜日のギャップを待ち、それがそうであるべきであるようにそれが取引されるのを見ます。