[아카이브!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 2. - 페이지 389

 
Dimka-novitsek :
고문을 시작할 때 아무 것도 확인하지 않으므로 나중에 각 틱마다 새 주문이 열리지 않습니다.
 OrderSelect ( tiket,SELECT_BY_TICKET, MODE_TRADES );
if (OrderSymbol()== Symbol ())
{
   if (OrderMagicNumber( )== 1000 ||OrderMagicNumber( )== 2000 )
   {
      i= OrdersTotal () ;
      if (i< 2 )
      {
         tiket= OrderSend ( Symbol (), OP_BUYSTOP, volume*A, price +otstup* Point , Point * 3 , R1, PRICE_OPEN +takeprofit* Point +otstup, "OP_BUYSTOP" , 1000 , expiration, Red );
         Alert ( "OP_BUYSTOP" , GetLastError ( ));
         tikett= OrderSend ( Symbol (), OP_SELLSTOP, volume*A, price -otstup* Point , Point * 3 ,R2, PRICE_OPEN -takeprofit* Point -otstup, "OP_SELLSTOP" , 2000 , expiration, C'0,128,255' );
         Alert ( "OP_SELLSTOP" , GetLastError ( ));
         i= OrdersTotal ();
      }
   }
}

이것은 귀하의 코드이며 변경하지 않았습니다.

티켓 주문을 선택하고 이 기호와 이 마법의 주문을 선택하고 총 2개 미만 의 주문이 있으면 주문이 이루어진다고 작성했습니다.

 
감사해요!! 죄송합니다, 그냥 헛소리를 썼습니다.
 
drknn :


코드 없이는 말하기 어렵습니다. Expert Advisor는 4자리 숫자로 작성되고 데모 계정은 5자리 숫자로 작성될 가능성이 큽니다. 설정에 예를 들어 10포인트의 손절매 주문이 있는 경우 5자리 숫자는 4자리 1포인트와 같은 거리임을 이해합니다. 동시에 정지 명령을 설정하기위한 최소 허용 거리가 3 포인트라고 말하면 5 자리에서 3이 아니라 30 포인트가됩니다. 서버가 5자리 기호에 10포인트 중지로 주문하라는 명령을 단순히 거부할 것이 분명합니다.

하지만, 다른 이유가 있을 수 있습니다. 당신은 사람들에게 물었습니다. 왜 차가 시동되지 않습니까? 사람들은 후드를 열지 않고 차가 시동 시도에 어떻게 반응하는지 듣지 않고 이유를 말할 수 없습니다 ...

EURUSD에서 시작된 전략 테스터는 실행을 위해 여러 통화, EURUSD, GBPUSD, USDJPY에서 시작하려고 시도했지만 어디에서나 작동하지 않습니다. 매수/매도 주문을 보낼 때 저는 포인트를 사용하였기 때문에 모든 사인에서 작동할 것입니다. 무엇보다 테스터가 결과를 보여주는 이유가 명확하지 않지만 고문은 데모 계정에서 포지션을 열지 않습니다. 어떤 경우에 이런 일이 일어날 수 있습니까?

어쨌든 답변 감사합니다. 저녁에 코드를 게시하겠습니다.

 
Dimka-novitsek :


죄송합니다. 여기에 말도 안되는 내용을 썼습니다. 가능하면 제가 어디에서 완전히 양인지 보여주세요.

전체적으로 :))))))))))))))))))))

처음부터 시작하겠습니다.

 //+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int       tiket, tikett;
int       i= 0 , R1= 0 , R2= 0 , A= 1 ;
double    volume= 0.1 ;
double    price= PRICE_OPEN ;
// R1=((PRICE_OPEN- stoploss*Point)*stoploss)/stoploss;R2=((PRICE_OPEN+ stoploss*Point)*stoploss)/stoploss;

int start()
{
//----

   OrderSelect (tiket, SELECT_BY_TICKET, MODE_TRADES);
   if (OrderSymbol()== Symbol ()) {
       if (OrderMagicNumber()== 1000 || OrderMagicNumber()== 2000 ) {
         i= OrdersTotal ();
         if (i< 2 ) {
            tiket= OrderSend ( Symbol (), OP_BUYSTOP, volume*A, price+otstup* Point , Point * 3 , R1, PRICE_OPEN +takeprofit* Point +otstup, "OP_BUYSTOP" , 1000 , expiration, Red );
             Alert ( "OP_BUYSTOP" , GetLastError ( ));
            tikett= OrderSend ( Symbol (), OP_SELLSTOP, volume*A, price-otstup* Point , Point * 3 ,R2, PRICE_OPEN -takeprofit* Point -otstup, "OP_SELLSTOP" , 2000 , expiration, C'0,128,255' );
             Alert ( "OP_SELLSTOP" , GetLastError ( ));
            i= OrdersTotal ();
            }
         }
      }

//----
return ( 0 );
}
//+------------------------------------------------------------------+

처음에는 두 개의 변수가 0으로 초기화됩니다.

 int       tiket, tikett;

다음으로 코드의 첫 번째 줄에서 티켓으로 주문을 선택합니다.

 OrderSelect (tiket, SELECT_BY_TICKET, MODE_TRADES);

여기서 티켓 변수는 0입니다. 저것들. 제로 티켓으로 주문을 선택하려고 합니다. 동시에 그들은 인증서도 읽지 않았습니다. 티켓으로 선택할 때 풀 매개변수는 무시되고 여전히 MODE_TRADES를 지정합니다. 이것은 오류가 아닙니다. 이것은 이 경우에 추가 매개변수이며 단순히 무시됩니다. 따라서 티켓이 0인 주문은 선택되지 않습니다. 존재하지 않습니다...

또한 모든 것이 중첩된 상태로 진행됩니다. 첫 번째 조건은 다음과 같습니다.

 if (OrderSymbol()== Symbol ())

... 선택한 주문의 기호가 현재 차트의 기호와 일치하면... 그리고 아무 주문도 선택하지 않았기 때문에 아무 것도 하지 않고 안전하게 start()에서 빠져 나옵니다.

감히 당신에게 장담합니다 ... 또한, 거기에서 당신에게 덜 흥미롭지는 않지만 ... 주위를 파고드는 것은 흥미롭지 않습니다.

이미 열려 있는 위치를 찾거나 보류 중인 주문을 설정 하여 지금 시작하십시오.

행운을 빕니다.

 
ilunga :

이것은 귀하의 코드이며 변경하지 않았습니다.

티켓 주문을 선택하고 이 기호와 이 마법의 주문을 선택하고 총 2개 미만의 주문이 있으면 주문이 이루어진다고 작성했습니다.


하지만, 아니요, 맞습니다. 2개 미만의 주문을 시작하면 2개의 보류 주문이 배치되고 다음 틱에는 2개가 있고 아무 일도 일어나지 않습니다.

내 머리에 위기가 있어야합니다.

 
Dimka-novitsek :


하지만, 아니요, 맞습니다. 2개 미만의 주문을 시작하면 2개의 보류 주문이 배치되고 다음 틱에는 2개가 있고 아무 일도 일어나지 않습니다.

내 머리에 위기가 있어야합니다.

위기가 닥친 곳에 이미 차근차근 그려 놓았으니...
 
Sersad :

EURUSD에서 시작된 전략 테스터는 실행을 위해 여러 통화, EURUSD, GBPUSD, USDJPY에서 시작하려고 시도했지만 어디에서나 작동하지 않습니다. 매수/매도 주문을 보낼 때 포인트를 사용했기 때문에 모든 사인에서 작동해야 합니다. 무엇보다 테스터가 결과를 보여주는 이유가 명확하지 않지만 고문은 데모 계정에서 포지션을 열지 않습니다. 어떤 경우에 이런 일이 일어날 수 있습니까?

어쨌든 답변 감사합니다. 저녁에 코드를 게시하겠습니다.


Point 의 값이 다른 것은 바로 그 점입니다.

 
PapaYozh :


Point 값이 다른 것은 바로 그 점입니다.

포인트 값은 견적마다 다르지만 그 본질은 소수점 이하 자릿수에 관계없이 모든 견적에 대해 동일합니다. 이것이 최소 가격 단계입니다.

이것이 결국 내가 정지 손실에 사용한 것, 예를 들어 Ask-0.003이 아니라 Ask-30*Point 가 drknn의 주석의 조언을 제거한 이유 입니다.

""... 어드바이저가 4자리로 쓰여지고, 데모 계정이 5자리일 가능성이 큽니다. 설정에 예를 들어 10포인트의 손절매 주문이 있는 경우 5자리 숫자는 4자리 1포인트와 같은 거리임을 이해합니다. 동시에 정지 명령을 설정하기위한 최소 허용 거리가 3 포인트라고 말하면 5 자리에서 3이 아니라 30 포인트가됩니다. 5자리 숫자에서 서버는 10포인트의 정지로 주문을 하라는 명령을 단순히 거부할 것입니다...""

더블 포인트 - 견적 통화에서 현재 상품 의 포인트 크기 .
 

말하다.

최소 허용 손절매/이익 수준의 값을 포인트로 표시하는 간단한 스크립트를 작성했습니다.

정수 시작()
{
int min=MarketInfo( Symbol() ,MODE_STOPLEVEL);
경보(분);
리턴(0);
}

0을 출력합니다. 이 설정의 기본값입니까?

 

fx_max :

최소 허용 손절매/이익 수준의 값을 포인트로 표시하는 간단한 스크립트를 작성했습니다.


int min=MarketInfo(Symbol(),MODE_STOPLEVEL);

0을 출력합니다. 이 설정의 기본값입니까?


아니요
사유: