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

 
costy_ >>:

ありがとうございました。ここに もう少しありました。もしかしたら誰かが必要としているかもしれません。グレイルを完成させに行く:)

 
costy_ >>:

Если массив double а нужен int? Я правильно понял?

いいえ、私はMT4がソケットを介して他のアプリケーションとリンクするように書いています。Socket関数はint型の配列を返します。

extern "C" __declspec ( dllexport ) int* CALLBACK SendInfoBySocket(int* MessageStr, int MessageLength,int PORT);

このDLLをEAにインポートしています。ただし、この関数を呼び出すには、Expert Advisor で宣言する必要があります。

int SendInfoBySocket(int str[], int len,int port);

上記の宣言はおそらく正しくありません。DLL の関数は配列を返し、Expert Advisor で宣言された関数は 1 つの int を返します。

Expert Advisorで、単一の数値ではなく、配列を返すように宣言するにはどうすればよいですか?

 
ありがとうございます。int*の代わりにchar*(c++)とstring(mql4)を使うことで問題は解決しました。
 

誰がわかる?

例えば、Bid=1.3988をBid=1.398と指定するように、数値を丸めずに、指定した精度形式で変数doubleを指定するにはどうしたらよいでしょうか?

 
admin86 >>:

Кто знает?

Как указать переменную double в указаном формате точности без округление числа, к примеру Bid=1.3988 указать как Bid=1.398 ???

このように?

 

すべて解決、答えはここにある https://forum.mql4.com/ru/25945

 

助けてください・・・。

\プログラム終了」 - アンバランスな左括弧


 extern double Lots = 0.1;
extern int TrailingStop=0;
extern string symbol="GBPUSD";
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double ma_close,ma_close_pr,ma_open,ma_open_pr;
   double spread,sl_buy,sl_sell,high,high_n,low,low_n;
   int cnt, ticket, total;


   if(Bars<55)
     {
      Print("bars less than 55");
      return(0);  
     }

// to simplify the coding and speed up access
// data are put into internal variables
         ma_close=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,1);
         ma_close_pr=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,2);      
         ma_open=iMA(NULL,0,5,0,MODE_EMA,PRICE_OPEN,1);
         ma_open_pr=iMA(NULL,0,5,0,MODE_EMA,PRICE_OPEN,2);
         spread=MarketInfo(symbol,MODE_SPREAD);
         sl_buy=iLow(NULL,0,1)-spread*Point;
         sl_sell=iHigh(NULL,0,1)+spread*Point;
         high=iHigh(NULL,0,1);
         high_n=iHigh(NULL,0,0);
         low=iLow(NULL,0,1);
         low_n=iLow(NULL,0,0);
        
   

//----
    
   total=OrdersTotal();
   if(total<1) 
     {
      // no opened orders identified
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }
      // check for long position (BUY) possibility
      if(ma_close>ma_open && ma_close_pr<ma_open_pr && high_n>high)
        {
        ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,sl_buy,0,"FXJEDDI_MTF:Buy",16384,0,Lime);

         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
      // check for short position (SELL) possibility
      if(ma_close<ma_open && ma_close_pr>ma_open_pr && low_n<low)
        {
            ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,sl_sell,0,"FXJEDDI_MTF:Sell",16384,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0); 
        }
       
       
        for(int i = 0; i < OrdersTotal(); i++)
   {
      // выбор одера
      if(OrderSelect(i, SELECT_BY_POS) == false) continue;
      // not current symbol
      if(OrderSymbol() != Symbol()) continue;
  }
if(OrderType() == OP_SELL)
{
//при профите >20 pips добавится или докупится ... 
 if(OrderProfit()>20)
 OrderSend(Symbol(),OP_SELL,Lots,Bid,3,sl_sell,0,"FXJEDDI:Sell",16384,0,Red);
}
if(OrderType() == OP_BUY)
{
//при профите >20 pips добавится или докупится ... 
 if(OrderProfit()>20)
 OrderSend( (Symbol(),OP_BUY,Lots,Ask,3,sl_buy,0,"FXJEDDI:Buy",16384,0,Lime);
}
      return(0);
     }

どうしたんですか?
 
ネクロンは どこかでブラケットを閉じていないのか、探してみてください・・・。
 

第2部

 // it is important to enter the market correctly, 
   // but it is more important to exit it correctly...   
   for( cnt=0; cnt< total; cnt++)
     {
      OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
 OrderSend( 
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // should it be closed?
            if( ma_close< ma_open && ma_close_pr> ma_open_pr && low_n< low)
                {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
                 return(0); // exit
                }
            // check for trailing stop
            if( TrailingStop>0)  
              {                 
               if(Bid-OrderOpenPrice()>Point* TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point* TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point* TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else // go to short position
           {
            // should it be closed?
            if( ma_close> ma_open && ma_close_pr< ma_open_pr && high_n> high)
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
               return(0); // exit
              }
            // check for trailing stop
            if( TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-Ask)>(Point* TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+Point* TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point* TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
           }
        }
     }
   return(0);
   
  }
// the end.
 
Techno >>:
Necron скобку где то не закрыл, ищи...

正しいコードで追記を行いましたか?