초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 254

 
Aleksei Stepanenko # :
음, 조화롭군요, 아름다움.

그리고 아무도 다투지 않았습니다. 대답이 마음에 들지 않았습니다 - 네, 제발 ... 왜 이것 때문에 화를 냈습니까? ... 결국 사람은 다릅니다. 그리고 이전 메시지에서 나는 모든 프로그래머에 대해 이것을 말했습니다. 나 자신도 가끔 초보자를 위한 주제로 질문을 한다. 하나의 게시물로 답변할 수 있는 질문에 대해 전체 스레드를 만드는 의미가 무엇입니까?

 

로봇을 작성했습니다... 테스터에서 OrderSend 오류 148이 발생합니다. 문제가 무엇입니까?


 //+------------------------------------------------------------------+
//|                                               эксперт пустой.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link        " https://www.mql5.com "
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
int pu;
 
   
//делаем сделку один раз при октрытии бара
int i= 1 ; //номер ордера
int posup= 0 ,possell= 0 ;
int pos_sum= 0 ;
int posa_close= 0 ;
double posa_close_summ= 0.03 ; //объем закрытой позиции
 
datetime bar_otkr=Time[ 0 ];
if (Time[ 0 ]>bar_otkr)

 while ( i< OrdersTotal ())
 {
 OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
 
 pu=pu+OrderProfit();
 if (OrderType()== OP_BUY) posup++;
 if (OrderType()== OP_SELL) possell++;
 if (posup> 0 )pos_sum= 1 ; //направление бай
 if (possell> 0 )pos_sum= 0 ; //направление селл
 i++;
 }
 ;
 
 printf (posup,possell);
   if     (Close[ 0 ]>Open[ 0 ]&&pu== 0 ) OrderSend ( Symbol (),OP_BUY, 0.03 ,Bid, 2 ,Ask+ 15 , 0 , 0 , 0 , 0 , 0 ); //свеча бай при начале работы
   if (Close[ 0 ]<Open[ 0 ]&&pu== 0 ) OrderSend ( Symbol (),OP_SELL, 0.03 ,Bid, 2 ,Ask+ 15 , 0 , 0 , 0 , 0 , 0 ); //свеча селл при начале работы
      
   if (Close[ 0 ]>Open[ 0 ]&&pu> 0 &&pos_sum== 1 ) OrderSend ( Symbol (),OP_BUY, 0.03 ,Bid, 2 ,Ask+ 15 , 0 , 0 , 0 , 0 , 0 ); //свеча бай при прибыли при покупках - покупаем 0.03
   if (Close[ 0 ]<Open[ 0 ]&&pu> 0 &&pos_sum== 1 ) //свеча селл при прибыли при покупках- кроем 0.01
   while (i< OrdersTotal ())
 {
 OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
 if (OrderLots()>= 0.01 &&posa_close== 0 ) OrderClose(i, 0.01 ,Bid, 3 );posa_close= 1 ;
 if (posa_close== 1 ) break ; else posa_close= 0 ;
 

 
 i++;
   
  }
   
   
;
 
 
 
   if (Close[ 0 ]<Open[ 0 ]&&pu< 0 &&pos_sum== 1 ) //свеча селл при убытках при покупках- кроем 0.03
   while (i< OrdersTotal ())
 {
 OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
 if (OrderLots()== 0.03 &&posa_close== 0 ) OrderClose(i, 0.03 ,Bid, 3 );posa_close= 1 ;
 if (posa_close== 1 ) break ; else posa_close= 0 ;
 
 if (posa_close== 0 &&OrderLots()== 0.02 )OrderClose(i,OrderLots(),Bid, 3 );posa_close_summ=posa_close_summ- 0.02 ; if (posa_close_summ== 0 )posa_close= 1 ;
 
 if (posa_close== 0 &&OrderLots()== 0.01 )OrderClose(i,OrderLots(),Bid, 3 );posa_close_summ=posa_close_summ- 0.01 ; if (posa_close_summ== 0 )posa_close= 1 ;
 
 
 
 i++;
   
  }
   
   
;
 
 
 
 
 
 
 
 
 
 
 
  
   if (Close[ 0 ]<Open[ 0 ]&&pu> 0 &&pos_sum== 0 ) OrderSend ( Symbol (),OP_SELL, 0.03 ,Bid, 2 ,Ask+ 15 , 0 , 0 , 0 , 0 , 0 ); // свеча селл при продаже и прибыли - покупаем 0.03
  
  
  
  
  
   if (Close[ 0 ]>Open[ 0 ]&&pu> 0 &&pos_sum== 0 ) //свеча бай при продаже и прибыли- кроем 0.01
   while (i< OrdersTotal ())
 {
 OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
 if (OrderLots()>= 0.01 &&posa_close== 0 ) OrderClose(i, 0.01 ,Bid, 3 );posa_close= 1 ;
 if (posa_close== 1 ) break ; else posa_close= 0 ;
 
 
 i++;
   
  }
   
   
;
 
 
  
  
  
// свеча селл при продаже и убытке - ничего не делаем
    

   if (Close[ 0 ]>Open[ 0 ]&&pu< 0 &&pos_sum== 0 ) // свеча бай при продаже и убытке - кроем 0.03

   while (i< OrdersTotal ())
 {
 OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
 if (OrderLots()== 0.03 &&posa_close== 0 ) OrderClose(i, 0.03 ,Bid, 3 );posa_close= 1 ;
 if (posa_close== 1 ) break ; else posa_close= 0 ;
 
 if (posa_close== 0 &&OrderLots()== 0.02 )OrderClose(i,OrderLots(),Bid, 3 );posa_close_summ=posa_close_summ- 0.02 ; if (posa_close_summ== 0 )posa_close= 1 ;
 
 if (posa_close== 0 &&OrderLots()== 0.01 )OrderClose(i,OrderLots(),Bid, 3 );posa_close_summ=posa_close_summ- 0.01 ; if (posa_close_summ== 0 )posa_close= 1 ;
 
 
 
 i++;
   
  }
   
   
;
  
  
  
  }
//+------------------------------------------------------------------+
 

사람들... 도와주세요! 새로운 바가 있습니다 ...

새 바가 열릴 때만 주문을 열려면 어떻게 해야 합니까?

 
Roman Epifanov 새로운 바가 생겼습니다...

새 바가 열릴 때만 주문을 열려면 어떻게 해야 합니까?

 void OnTick () {
   datetime cTime;
   static datetime time = 0 ;
  cTime = iTime (Symbol(), Period(), 0 );
   if (time != cTime)
    time = cTime;
   else
     return ;
  ...
}
 

요컨대, 그는 거래를 정상적으로 시작하고 싶지 않습니다.. 무엇이 문제일 수 있습니까.. 컴파일하는 동안 오류가 없습니다.

 //+------------------------------------------------------------------+
//|                                               эксперт пустой.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link        " https://www.mql5.com "
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
int pu;
 

//делаем сделку один раз при октрытии бара
int i= 1 ; //номер ордера
int posup= 0 ,possell= 0 ;
int pos_sum= 0 ;
int posa_close= 0 ;
double posa_close_summ= 0.03 ; //объем закрытой позиции
 

static datetime New_Time= 0 ;
   bool New_Bar= false ;
   if (New_Time!=Time[ 0 ])
  {
  New_Time=Time[ 0 ];
  New_Bar= true ;
}

if (New_Bar)
{
 Print (New_Bar);
 
 
 while ( i< OrdersTotal ())
 {
 OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
 
 pu=pu+OrderProfit();
 if (OrderType()== OP_BUY) posup++;
 if (OrderType()== OP_SELL) possell++;
 if (posup> 0 )pos_sum= 1 ; //направление бай
 if (possell> 0 )pos_sum= 0 ; //направление селл
 i++;
 }
 ;
 

   if     (Close[ 0 ]>Open[ 0 ]&&pu== 0 ) OrderSend ( Symbol (),OP_BUY, 0.03 ,Bid, 2 ,Ask+ 15 , 0 , 0 , 0 , 0 , 0 ); //свеча бай при начале работы
   if (Close[ 0 ]<Open[ 0 ]&&pu== 0 ) OrderSend ( Symbol (),OP_SELL, 0.03 ,Bid, 2 ,Ask+ 15 , 0 , 0 , 0 , 0 , 0 ); //свеча селл при начале работы
      
   if (Close[ 0 ]>Open[ 0 ]&&pu> 0 &&pos_sum== 1 ) OrderSend ( Symbol (),OP_BUY, 0.03 ,Bid, 2 ,Ask+ 15 , 0 , 0 , 0 , 0 , 0 ); //свеча бай при прибыли при покупках - покупаем 0.03
   if (Close[ 0 ]<Open[ 0 ]&&pu> 0 &&pos_sum== 1 ) //свеча селл при прибыли при покупках- кроем 0.01
   while (i< OrdersTotal ())
 {
 OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
 if (OrderLots()>= 0.01 &&posa_close== 0 ) OrderClose(i, 0.01 ,Bid, 3 );posa_close= 1 ;
 if (posa_close== 1 ) break ; else posa_close= 0 ;
 

 
 i++;
   
  }
   
   
;
 
 
 
   if (Close[ 0 ]<Open[ 0 ]&&pu< 0 &&pos_sum== 1 ) //свеча селл при убытках при покупках- кроем 0.03
   while (i< OrdersTotal ())
 {
 OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
 if (OrderLots()== 0.03 &&posa_close== 0 ) OrderClose(i, 0.03 ,Bid, 3 );posa_close= 1 ;
 if (posa_close== 1 ) break ; else posa_close= 0 ;
 
 if (posa_close== 0 &&OrderLots()== 0.02 )OrderClose(i,OrderLots(),Bid, 3 );posa_close_summ=posa_close_summ- 0.02 ; if (posa_close_summ== 0 )posa_close= 1 ;
 
 if (posa_close== 0 &&OrderLots()== 0.01 )OrderClose(i,OrderLots(),Bid, 3 );posa_close_summ=posa_close_summ- 0.01 ; if (posa_close_summ== 0 )posa_close= 1 ;
 
 
 
 i++;
   
  }
   
   
;
 
 
 
 
 
 
 
 
 
 
 
  
   if (Close[ 0 ]<Open[ 0 ]&&pu> 0 &&pos_sum== 0 ) OrderSend ( Symbol (),OP_SELL, 0.03 ,Bid, 2 ,Ask+ 15 , 0 , 0 , 0 , 0 , 0 ); // свеча селл при продаже и прибыли - покупаем 0.03
  
  
  
  
  
   if (Close[ 0 ]>Open[ 0 ]&&pu> 0 &&pos_sum== 0 ) //свеча бай при продаже и прибыли- кроем 0.01
   while (i< OrdersTotal ())
 {
 OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
 if (OrderLots()>= 0.01 &&posa_close== 0 ) OrderClose(i, 0.01 ,Bid, 3 );posa_close= 1 ;
 if (posa_close== 1 ) break ; else posa_close= 0 ;
 
 
 i++;
   
  }
   
   
;
 
 
  
  
  
// свеча селл при продаже и убытке - ничего не делаем
    

   if (Close[ 0 ]>Open[ 0 ]&&pu< 0 &&pos_sum== 0 ) // свеча бай при продаже и убытке - кроем 0.03

   while (i< OrdersTotal ())
 {
 OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
 if (OrderLots()== 0.03 &&posa_close== 0 ) OrderClose(i, 0.03 ,Bid, 3 );posa_close= 1 ;
 if (posa_close== 1 ) break ; else posa_close= 0 ;
 
 if (posa_close== 0 &&OrderLots()== 0.02 )OrderClose(i,OrderLots(),Bid, 3 );posa_close_summ=posa_close_summ- 0.02 ; if (posa_close_summ== 0 )posa_close= 1 ;
 
 if (posa_close== 0 &&OrderLots()== 0.01 )OrderClose(i,OrderLots(),Bid, 3 );posa_close_summ=posa_close_summ- 0.01 ; if (posa_close_summ== 0 )posa_close= 1 ;
 
 
 
 i++;
   
  }
   
   
;
  
  
  
  }
}
//+------------------------------------------------------------------+
파일:
Lentyai2.mq4  10 kb
 

안녕하세요! 특정 기호에 대한 모든 구매를 종료하려면 코드가 필요합니다.

 
Roman Epifanov # :

로봇을 작성했습니다... 테스터에서 OrderSend 오류 148이 발생합니다. 문제가 무엇입니까?


MQL에는 내부 기능이 없고 외부 기능만 있습니다.

문제를 해결하는 방법을 알고 있습니까, 아니면 자격을 갖춘 도움이 필요합니까? )))

 
Алексей Тарабанов # :

MQL에는 내부 기능이 없고 외부 기능만 있습니다.

문제를 해결하는 방법을 알고 있습니까, 아니면 자격을 갖춘 도움이 필요합니까? )))

오류 148 이미 해결됨

 

잘못된 이익 을 씁니다 - 무슨 일이야?


 if (Close[ 1 ]<Open[ 1 ]) { OrderSend ( Symbol (),OP_SELL,lot,Bid, 2 ,Ask+sl,Bid-tp, "Candle sell, Close[0]<MA" );};
   

나는 Bid-tp 대신 0을 넣었습니다. 작동합니다!

 
Roman Epifanov 이익 을 씁니다 - 무슨 일이야?


어떻게 tp를 초기화합니까?