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

 
FOReignEXchange :


좋아하는 사람. 사람마다 글씨가 다릅니다. 어쩌면 당신은 모든 것이 옳았지만 나에게는 서투른 것처럼 보입니다.

나는 그렇게하지 않을 것입니다.

첫째, 왜 거기에 변수를 선언해야 하는지, 그리고 이것의 의미가 무엇인지 잘 이해하지 못합니다. 저도 이해가 되지 않습니다.

둘째, PriceBuy = Ask; OrderSend 함수 바로 뒤에 위치합니다. 그리고 내가 아는 한, 이 함수의 실행이 끝나는 즉시 계산은 다음 줄로 넘어간다. 나는 Ask 가격이 바뀔 수 있다고 생각하지 않습니다. 나는 모든 것을 가능한 한 간단하게 작성하려고 노력하고 이것이 프로그램의 정상적인 기능을 방해하지 않는다면 문자 수를 줄이려고 노력합니다. 당신은 당신이 하는 것처럼 값을 할당할 수 있습니다. 여기서 문제가 보이지 않습니다. 그는 가장 먼저 간단한 것이 떠올랐다고 썼습니다.

나는 한 번 Pipser를 쓰고 계산될 최소 이익이 5포인트인 콘테스트에 참가했습니다. 나는 어드바이저에서 TP=5, SL=10으로 설정하고, 어드바이저를 차트에 던지고 산책을 갔다. 저녁에 집에 돌아와서 터미널을 보고 실망했습니다. 내 파이퍼는 대부분의 거래를 플러스로 마감했지만 그 중 일부의 이익은 내가 필요로 했던 5가 아니라 4포인트, 심지어 3포인트였습니다. 참고로 SL은 가끔 10점도 아니고 11점이나 12점...

왜요? 나는 당신이 답을 알고 있다고 확신합니다! :디

다음은 Ask 및 Bid 가격을 주문 시작 가격으로 계산하는 것을 중단한 실제 상황입니다. 당신에게 1-2 포인트, 이것은 필수가 아니지만 괜찮습니다. 이 작은 것들이 나에게 중요합니다 ...

 
MaxZ :

왜요? 나는 당신이 답을 알고 있다고 확신합니다! :디

아니다. 확산을 고려하지 않았기 때문이라고 생각했다.

이익이 6-7 포인트였던 거래가 있습니까?

 
FOReignEXchange :
아니다. 확산을 고려하지 않았기 때문이라고 생각했다.

젠장... 내 말을 인용해

최대 Z :

세 번째: OrderSend 거래 기능에 Slippage가 지정되어 있고 우리가 매수 주문을 열고자 하는 경우 주문이 매도 가격에서 정확히 열릴 필요는 없습니다. OrderSend 기능과 가격이 이 값에서 멀어질 수 있습니다.

우리가 TP와 SL을 묶는 가격 가치는 무엇입니까? To Ask... 가격이 변경되었지만 TP 및 SL 레벨은 어디에도 이동하지 않았습니다.

 
MaxZ :

우리가 TP와 SL을 묶는 가격 가치는 무엇입니까? To Ask... 가격이 변경되었지만 TP 및 SL 레벨은 어디에도 이동하지 않았습니다.

내 철자가 절대적으로 정확하다고 보장할 수 없습니다. 하지만 필요할 때마다 이 작업을 수행합니다. 아무것도 잘못되었다는 것을 눈치채지 못했습니다.

당신의 경우 5점 미만의 이익을 취한 경우에도 코드를 보지 못해서 아무 말도 할 수 없습니다.

 

그것은:

 if (Opn_B)
{
   Alert ( "Попытка открыть ордер Buy..." );
   RefreshRates ();
   SL = Ask-StopLoss* Point ;
   TP = Ask+TakeProfit* Point ;
   Ticket = OrderSend (Symb, OP_BUY , Lots, Ask, Slippage, SL, TP, NULL , MAGIC, 0 , Blue );
   if (Ticket > 0 )
   {
       Alert ( "Открыт ордер Buy " , Ticket, "." );
      Opn_B = False;
   }
   else
       Alert ( "Ошибка: " , GetLastError ());
}

그것은되었다:

 if (Opn_B)
{
   Alert ( "Попытка открыть ордер Buy..." );
   RefreshRates ();
   SL = Ask-StopLoss* Point ;
   TP = Ask+TakeProfit* Point ;
   Ticket = OrderSend (Symb, OP_BUY , Lots, Ask, Slippage, SL, TP, NULL , MAGIC, 0 , Blue );
   if (Ticket > 0 )
   {
       if ( OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES))
       if ( OrderCloseTime () == 0 )
      {
         Alert ( "Открыт ордер Buy " , Ticket, "." );
         Opn_B = False;
         
         if ( NormalizeDouble ( OrderOpenPrice ()- OrderStopLoss (), Digits ) != NormalizeDouble (StopLoss* Point , Digits ))
         {
            SL = OrderOpenPrice ()-StopLoss* Point ;
            TP = OrderOpenPrice ()+TakeProfit* Point ;
            
             Alert ( "Попытка модифицировать ордер Buy " , Ticket, "..." );
             if ( OrderModify (Ticket, OrderOpenPrice (), SL, TP, 0 , Blue ))
               Alert ( "Ордер Buy " , Ticket, " модифицирован." );
             else
               Alert ( "Ошибка: " , GetLastError ());
         }
      }
       else
         Alert ( "Да ну нафиг!?" );
   }
   else
       Alert ( "Ошибка: " , GetLastError ());
}

원리는 이것입니다. 하지만 실제로는 조금 더 복잡합니다...

몇줄?? 진실? :)))

 
MaxZ :

그것은 다음과 같았습니다.

그것은되었다:

원리는 이것입니다. 하지만 실제로는 조금 더 복잡합니다...

몇줄?? 진실? :)))


??? 이해하지 못했습니다. 첫 번째 예에서 SL과 TP는 어디에 있습니까?
 
FOReignEXchange :

??? 이해하지 못했습니다. 첫 번째 예에서 SL과 TP는 어디에 있습니까?

원리만 보여줬습니다. 확인. 추가되었습니다.

최대 Z :

원리는 이것입니다. 하지만 실제로는 조금 더 복잡합니다...

명시된 가격으로 주문이 열리지 않으면 주문 수정시 오류가 발생할 수 있으며 같은 레이크에 걸려 넘어질 것입니다... 그래서 사실 저희는 긍정적인 티켓으로 한번 이상 주문 수정을 시도하고 있습니다. ... 전체 코드를 복사하지 않으려는 것뿐입니다. 그는 부피가 크다. 원칙이 마련되었습니다.
 
아, 알겠습니다. SL과 TP 는 OrderSend 함수 앞에 옵니다 . 그게 문제였을까요?
 
FOReignEXchange :
아, 알겠습니다. SL과 TP는 OrderSend 함수 앞에 옵니다. 그게 문제였을까요?
이것에 무엇이 문제가 될 수 있습니까? SL과 TP가 계산되는 동안 가격이 바뀔 시간이 있을까요?? ;)))
 
MaxZ :
이것에 무엇이 문제가 될 수 있습니까? SL과 TP가 계산되는 동안 가격이 바뀔 시간이 있을까요?? ;)))

OrderSend 기능 이 실행되는 동안 가격이 변경될 수 있다고 말했습니다. 따라서 이미 변경된 경우 이후에 할당해야 합니다.