여기서 무슨 문제가 있습니까? - 페이지 5

 
sss2019 :


와우 감사합니다, 저는 이 방법이 더 보편적이라고 생각합니다.

그건 그렇고, 주문이 열렸음을 어드바이저에서 선언하는 방법, OrderSend는 내가 이해한 대로 주문 티켓만 전송합니다. OrderSelect를 사용하여 구현할 수 있습니다. 작동합니까?


초기화 블록 전에 주문 티켓을 포함할 변수를 선언합니다. 예를 들어:

인트 티켓;

start() 함수에서 OrderSend()를 호출 하기 전에 다음을 작성합니다.

티켓=-1;

OrderSend() 함수는 주문 티켓을 반환하므로 Ticket 변수가 0보다 큰지 확인하고 주문이 이루어진 것입니다. 그렇지 않으면 주문이 없습니다. OrderSend 도움말을 참조하세요. 주문을 할 수 없는 경우 함수가 틱이 아닌 값 = (-1) 을 반환한다고 합니다. 다음 틱에서 변수는 먼저 값 = -1로 초기화되고 순서가 지정되지 않기 때문에 변수는 코드가 끝날 때까지 음수로 유지됩니다. 그리고 새로운 질서가 생길 때까지 계속됩니다.

 
예를 들어 보여주세요. 그렇지 않으면 저에게 매우 빡빡합니다.
 
sss2019 :
예를 들어 보여주세요. 그렇지 않으면 저에게 매우 빡빡합니다.
 #property copyright ""
#property link       ""

int Ticket;
//+------------------------------------------------------------------+
//|                  Блок инициализации                              |
//+------------------------------------------------------------------+
int init(){
         return ( 0 );
}
//+------------------------------------------------------------------+
//|                  Блок деинициализации                            |
//+------------------------------------------------------------------+
int deinit(){
         return ( 0 );
}
//+------------------------------------------------------------------+
//|                  Старт работы советника                          |
//+------------------------------------------------------------------+
int start(){
        Ticket=(- 1 );
        
         if (если есть торговый сигнал){
                Ticket= OrderSend ();
        }
         if (Ticket> 0 ){ // тикет более нуля - ордер встал
                 // выполняем какие-то действия
        }
         return ( 0 );
}
//+------------------------------------------------------------------+
//|                  Пользовательские подпрограммы                   |
//+------------------------------------------------------------------+
 

왜 변수 Ticket=(-1)의 값이입니까? 괄호 안에?

글쎄, 어떤 종류의 넌센스가 밝혀졌고 주문이 열려 있지만 티켓은 여전히 -1과 같습니다.

 //+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

extern int MaFastPeriod = 30 ;
extern int MaSlowPeriod = 90 ;
extern int StopLoss = 25 ;
extern int TakeProfit = 50 ;

int Ticket;
int init()
  {

  }



int deinit()
  {

  }

int start()
  {
  Ticket=(- 1 );
   double MyPoint = Point ;
   if ( Digits == 3 || Digits == 5 )
      {
      MyPoint = Point * 10 ;
      }
      
double MaFast0 = iMA ( Symbol (), 0 ,MaFastPeriod, 0 , MODE_EMA , PRICE_CLOSE , 0 );
double MaSlow0 = iMA ( Symbol (), 0 ,MaSlowPeriod, 0 , MODE_EMA , PRICE_CLOSE , 0 );
   
   if ( OrdersTotal () == 0 && MaFast0 > MaSlow0 && Ticket==(- 1 ))
      {
      Ticket= OrderSend ( Symbol (), 0 , 0.1 ,Ask, 30 ,Ask-StopLoss*MyPoint,Ask+TakeProfit*MyPoint, "CommentA" , 0 , 0 , Green );
       return (Ticket);
      }
   Alert ( "Ticket = " ,Ticket); 
   return ( 0 );
  }
 
프로그램이 더 이상 진행되지 않고 경고가 표시되지 않도록 작성하는 이유
 return (Ticket);?
 
포지션을 열라는 신호가 전혀 없는 경우에만 경고 창이 팝업되며 확실히 -1이 표시됩니다.
 
따라서 주문이 Ticket 변수에 번호를 할당한 후에는 return을 사용하여 표시할 필요가 없습니다. 변수는 다음 틱에서 더 이상 삭제되지 않습니까?
 

여러 주문을 동시에 열 수 있습니까? 예를 들어 다음과 같이

 if (условие выполнено)
{
OrderSend ()
OrderSend ()
OrderSend ()
}
 
sss2019 :

여러 주문을 동시에 열 수 있습니까? 예를 들어 다음과 같이

특히, 이것은 작동하지 않을 수 있습니다. 첫 번째 요청은 서버에서 처리되고 후속 요청에는 오류가 발생하며 거래 스트림이 사용 중입니다. 오류 처리 와 함께 주문을 사용하는 것이 좋습니다.
 
sss2019 :

여러 주문을 동시에 열 수 있습니까? 예를 들어 다음과 같이


동시에 할 수 없습니다.

순차적으로만.