MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1337

 
sibiriyak73 :

어디에서 오류가 발생했습니까?

많은 상징이 있기 때문에 많은 "열림"이 있습니다

 struct Orders
   {
   string symbol;
   bool open;
   } orders[];

int OnInit ()
   {
   ArrayResize (orders, 2 );
   orders[ 0 ].symbol= "EURUSD" ;
   orders[ 0 ].open= false ;
   orders[ 1 ].symbol= "USDJPY" ;
   orders[ 1 ].open= false ;
   return ( INIT_SUCCEEDED );
   }

void OnTick ()
   {
   for ( int i= 0 ; i<2; i++)
      {
       if (!orders[i].open)
         {
         int ticket1= OrderSend (orders[i].symbol,OP_SELLSTOP, 1.5 ,limit1, 10 ,SL1,TP1, NULL , 0 , 0 , clrRed );   //Здесь открываем
         orders[i].open= true ;
         }
      }
........


 
Aleksei Stepanenko :

많은 상징이 있기 때문에 많은 "열림"이 있습니다

고마워 친구. 현재 상품에 대해 하루에 하나의 거래 를 시작하고 나머지 상품을 고려하지 않도록 만드는 방법(어드바이저는 여러 상품에 대해 작업함)
 
sibiriyak73 :
고마워 친구. 현재 상품에 대해 하루에 하나의 거래 를 시작하고 나머지 상품을 고려하지 않도록 만드는 방법(어드바이저는 여러 상품에 대해 작업함)

- 주문의 시작(또는 마감?) 시간이 현재 날짜와 일치하면 마법과 기호 로 주문 내역을 살펴보고 OnTick()을 종료합니다.

- TF D1의 "새 막대" 제어


첫 번째 방법 - 더 많은 낙서가 있지만 MT4 테스터에서는 매우 빠르게 작동하고 두 번째 방법 - 코드 3줄이지만 테스터에서는 하드 드라이브를 "씹어" 테스트 시간이 길어집니다.

 
sibiriyak73 :
(고문은 여러 악기에 서 있다)

그리고 제 생각에는 여러 도구에 대한 고문이 있는 경우 해당 주문이 고문에 속하는지 확인하기 위해 수표를 추가하면 됩니다.

 int OPEN= 1 ;

int total= OrdersTotal ();
for ( int i= 0 ; i<total; i++)
   {
   if (! OrderSelect (i,SELECT_BY_POS,MODE_TRADES) && OrderCloseTime()== 0 && OrderSymbol()== Symbol ())
      {
      OPEN= 0 ;
       break ;
      }
   }

if (OPEN== 1 )
   {
   int ticket1= OrderSend ( Symbol (),OP_SELLSTOP, 1.5 ,limit1, 10 ,SL1,TP1, NULL , 0 , 0 , clrRed );   //Здесь открываем
   }
 
Aleksei Stepanenko :

그리고 제 생각에는 여러 도구에 대한 고문이 있는 경우 해당 주문이 고문에 속하는지 확인하기 위해 수표를 추가하기만 하면 됩니다.

이 코드는 엄청난 수의 트랜잭션을 엽니다. 아이디어는 정확하지만 올바르게 구현하는 방법입니다.

 
sibiriyak73 :

이 코드는 엄청난 수의 트랜잭션을 엽니다. 아이디어는 정확하지만 올바르게 구현하는 방법입니다.

당신은 그것을 필요로

isTradeToDay() 함수.

이 함수는 오늘의 무역 플래그를 반환합니다.

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 

코드 조각으로 여기에서 무엇을 추측할 수 있습니까? 거기에 무엇이 있습니까?

하루에 한 번 이상 수표를 넣지 마십시오.

 datetime last_time= 0 ;   
MqlDateTime date1, date2; 

void OnTick ()
   {
   int OPEN= 1 ;

   int total= OrdersTotal ();
   for ( int i= 0 ; i<total; i++)
      {
       if (! OrderSelect (i,SELECT_BY_POS,MODE_TRADES) && OrderCloseTime()== 0 && OrderSymbol()== Symbol ())
         {
         OPEN= 0 ;
         break ;
         }
      }
      
   TimeToStruct (last_time,date1);
   TimeToStruct ( iTime ( Symbol (), 0 , 0 ),date2);
   if (date1.day==date2.day)
      {
      OPEN= 0 ;
      }

   if (OPEN== 1 )
      {

       int ticket1= OrderSend ( Symbol (),OP_SELLSTOP, 1.5 ,limit1, 10 ,SL1,TP1, NULL , 0 , 0 , clrRed );   //Здесь открываем
       if (ticket1>= 0 && OrderSelect (ticket1,SELECT_BY_TICKET,MODE_TRADES))
         {
         last_time=OrderOpenTime();
         }
      }

 
sibiriyak73 :

얘들 아, 고문을 도와주세요. 악기에서 하루에 하나의 거래를 열어야합니다.

당신은 이렇게 시도할 수 있습니다

 datetime dt = iTime ( _Symbol , PERIOD_D1 , 0 );

   for ( int i = 0 ; i < OrdersHistoryTotal(); i++) 
    {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY))
      {
       if ((OrderSymbol() != _Symbol ) && (dt < OrderCloseTime())
        {
         Открываем ордер;
        }
      }
    }
 
MakarFX :

당신은 이렇게 시도 할 수 있습니다

모든 것은 오래 전에 쓰여졌습니다. 아주 오래 전에.

이 코드는 이미 시장에 있는 것을 확인하고 오늘 이미 마감된 경우 기록에 무엇이 있는지 확인합니다.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает флаг торгов сегодня.                                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isTradeToDay( string sy= "" , int op=- 1 , int mn=- 1 ) {
   int i, k=OrdersHistoryTotal();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY )) {
       if (OrderSymbol()==sy || sy== "" ) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (op< 0 || OrderType()==op) {
             if (mn< 0 || OrderMagicNumber()==mn) {
               if (TimeDay  (OrderOpenTime())==Day()
              &&  TimeMonth(OrderOpenTime())==Month()
              &&  TimeYear (OrderOpenTime())==Year()) return (True);
            }
          }
        }
      }
    }
  }
  k= OrdersTotal ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES )) {
       if (OrderSymbol()==sy || sy== "" ) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (op< 0 || OrderType()==op) {
             if (mn< 0 || OrderMagicNumber()==mn) {
               if (TimeDay  (OrderOpenTime())==Day()
              &&  TimeMonth(OrderOpenTime())==Month()
              &&  TimeYear (OrderOpenTime())==Year()) return (True);
            }
          }
        }
      }
    }
  }
   return (False);
}
 
Aleksei Stepanenko :

코드 조각으로 여기에서 무엇을 추측할 수 있습니까? 거기에 무엇이 있습니까?

하루에 한 번 이상 수표를 넣지 마십시오.

인사말. 문제는 고문이 계좌에서 미결 거래를 발견하면 더 이상 거래를 열지 않는다는 것입니다. 글쎄, "당신은 계좌에 미결 거래가 있습니다. 당신은 나에게 무엇을 원합니까?"와 같은 것입니다. 이 전문가 고문은 여러 상품을 기반으로 하기 때문에 이 상품(예: EUR USD)에 대해 하나 이상의 거래를 열지 않아야 한다고 설명해야 합니다. 전체 코드를 퍼뜨리려면(선언된 변수 등으로 큽니다.) 틀리지 않을까 생각합니다.