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

 
hoz :



그래서 나는 이 사건에 대한 수표를 가지고 있다:

stop - new stop(사용 중)이 0이 아닌 경우... 수정합니다... 그렇지 않은 경우 수정하지 않습니다. 그래서 나는 이것이 어떻게 일어나는지 이해하지 못합니다. 결국, 나는 우리가 과거와 새로운 중지 의 평등에 대한 확인이 필요하다는 것을 이해하고 그것을 했습니다.

베이에 대해 오류 없이 트레일링할 때 상단과 하단을 확인하는 방법은 다음과 같습니다.

           if (OrderStopLoss() > OrderOpenPrice())
          {
             if ( NormalizeDouble (Bid-OrderStopLoss()-plus*tral, Digits ) > prev)
             if (Bid > NormalizeDouble (OrderStopLoss()+plus*tral+prev, Digits ))
            {
              SL = NormalizeDouble (OrderStopLoss()+plus*part*tral, Digits );
              ModifyOrder(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(), 0 ,Blue); return ( 0 );
          } }

주문 및 위치의 모든 수정에 적합한 ModifyOrder() 함수를 제공할 수 있습니다.

[Deleted]  
Vinin :

해킹처럼 보이지 않도록 이 코드를 수정하세요.
모르겠어요
그것을 편집하는 방법? 이해하는 방법?
 
borilunad :
나는 막대가 아니라 많은 핍으로 당신에게 조언 할 것입니다. 필요한 경우 이를 위해 리소스가 사용됩니다. 그리고 이미 존재하는 수정에 대한 대가가 반복될 때 "not error"라는 오류가 팝업됩니다. 따라서 처음에 이미 조언한 대로 차근차근 해야 합니다.


우우. ess-하지만 핍만큼 늘어납니다. 일반적 으로 함수 호출 B.U를 의미했습니다. 예를 들어 각 틱마다 또는 바를 열 때 수행하는 것... 그러나 이것은 이미 어리석은 일입니다. 왜냐하면 바의 경우 가격이 많이 뛸 수 있습니다. 따라서 통화는 이전과 동일하게 틱 바이 틱이 될 것입니다. 맞습니까? 그냥 모든 틱에서 호출되지 않도록 조건을 추가할 수 있다고 생각했습니다. 현재 STOP과 설치 예정인 STOP을 비교해야한다고 생각합니다.

일반적으로. 그것은 이상하게 밝혀졌습니다.

start 에 조건을 추가했는데 결과는 다음과 같습니다.

 if (priceBU != OrderStopLoss())
   {
       MovingStopLossToBU();
   }

이제 오류가 없습니다.

그러나 명확하지 않은 것은 MovingStopLossToBU() 함수 자체에서 B.U에 따라 stop이 stop과 같지 않은 경우에만 수정이 발생한다는 것입니다. 여기에서 다음을 볼 수 있습니다.

 if (ND(OrderStopLoss() - priceBU * pt) != 0.0 )
    if (!OrderModify(OrderTicket(), OrderOpenPrice(), priceBU, OrderTakeProfit(), 0 , CLR_NONE ))
    {
       Print ( "Ошибка модификации ордера " , OrderType(), " - " , GetLastError ());
    }
그러면 어떻게 이해해야 할까요?
 
안녕히 주무세요. 평균 MA(10) 이상인 양초를 녹색으로, 그 미만인 양초를 빨간색으로 색칠하는 방법을 알려주세요.
 
hoz :


우우. ess-하지만 핍만큼 늘어납니다. 일반적으로 함수 호출 B.U를 의미했습니다. 예를 들어 각 틱마다 또는 바를 열 때 수행하는 것... 그러나 이것은 이미 어리석은 일입니다. 왜냐하면 바의 경우 가격이 많이 뛸 수 있습니다. 따라서 통화는 이전과 동일하게 틱 바이 틱이 될 것입니다. 맞습니까? 그냥 모든 틱에서 호출되지 않도록 조건을 추가할 수 있다고 생각했습니다. 현재 STOP과 설치 예정인 STOP을 비교해야한다고 생각합니다.

일반적으로. 그것은 이상하게 밝혀졌습니다.

start 에 조건을 추가했는데 결과는 다음과 같습니다.

이제 오류가 없습니다.

그러나 명확하지 않은 것은 MovingStopLossToBU() 함수 자체에서 B.U에 따라 stop이 stop과 같지 않은 경우에만 수정이 발생한다는 것입니다. 여기에서 다음을 볼 수 있습니다.

그러면 어떻게 이해해야 할까요?

귀하의 예에서 스탑이 0이면 스탑 없이 포지션 이 방금 열렸음을 의미합니다. 그리고 나는 당신이 이미 손익분기점에 도달했을 때 당신에게 케이스를 주었습니다.

위를 참조하십시오, 나는 당신에게 확실한 트롤을 주었습니다! 그리고 나는 당신에게 기능을 줄 수 있습니다.

 
agat8430 :
모르겠어요
그것을 편집하는 방법? 이해하는 방법?
그런 다음 이해하지 못하면 잘못된 위치에 왔습니다. 모르는 것은 공부하고 물어보세요.. 그리고 이해가 안 되는 것은 필요하지 않습니다.
 
borilunad :
위를 참조하십시오, 나는 당신에게 확실한 트롤을 주었습니다! 그리고 나는 당신에게 기능을 줄 수 있습니다.


글쎄, 내가 썼을 때 나는 당신의 대답을 보지 못했습니다. 지금 바로 시청하겠습니다.

그러나 일반적으로 수정 기능을 보게되어 기쁠 것입니다. 나는 나 자신을 위해 새로운 것을 얻을 것이다.

 
borilunad :

귀하의 예에서 스탑이 0이면 스탑 없이 포지션이 방금 열렸음을 의미합니다. 그리고 나는 당신이 이미 손익분기점에 도달했을 때 당신에게 케이스를 주었습니다.

위를 참조하십시오. 나는 당신에게 확실한 트롤을 주었습니다! 그리고 나는 당신에게 기능을 줄 수 있습니다.


아니, 중지 없이. 한 장만 올렸습니다. 다음은 손익분기점 함수입니다.

 //+-------------------------------------------------------------------------------------+
//| Перевод в б.у. рыночных ордеров                                                     |
//+-------------------------------------------------------------------------------------+
void MovingStopLossToBU()
{
    double priceBU;
    int type = OrderType();
    for ( int i= OrdersTotal () - 1 ; i>= 0 ; i--)
    {
        if (! OrderSelect (i,SELECT_BY_POS)) continue ;
        if (i_magic != - 1 ) if (OrderMagicNumber() != i_magic) continue ;
        if (OrderSymbol() != Symbol ()) continue ;
        if (OrderType() > 1 ) continue ;
        
        RefreshRates();
        
        if (type == 0 )
        {
           double price = Ask;
           int li_cmd = 1 ;
        }
        else
        {
           price = Bid;
           li_cmd = - 1 ;
        }

           if (li_cmd * (price - OrderOpenPrice()) >= i_triggerForBU * pt)
           {
             priceBU = ND(OrderOpenPrice() + li_cmd * (i_preservedProfit * pt));
             if (ND(OrderStopLoss() - priceBU * pt) != 0.0 )
             {

                 if (!OrderModify(OrderTicket(), OrderOpenPrice(), priceBU, OrderTakeProfit(), 0 , CLR_NONE ))
                 {
                     Print ( "Ошибка модификации ордера " , OrderType(), " - " , GetLastError ());
                 }
               
                     Comment ( "Ордер успешно переведён в безубыток" );
                     Print ( "Ордер успешно переведён в безубыток" );
             }
           }
    }
}

라인은 계산된 정류장이 이미 존재하는 정류장과 같으면 수정이 없을 것임을 분명히 보여줍니다! 권리? 그래서 시험은 원래? 하지만 수정 함수가 시작되기 전 다음 조건을 입력할 때까지 오류 1이 지속적으로 발생했습니다.

 if (priceBU != OrderStopLoss())
   {
       MovingStopLossToBU();
   }
그렇기 때문에 .... 이것이 내가 이해하고 싶은 것입니다. 내가 모든 것을 철저히 설명했듯이.
[Deleted]  
hoz :
그런 다음 이해하지 못하면 잘못된 위치에 왔습니다. 모르는 것은 공부하고 물어보세요.. 그리고 이해가 안 되는 것은 필요하지 않습니다.


그럼, 해킹된 가문비나무처럼 보이지 않도록 코드를 편집하는 방법을 알려주세요. 모든 것을 이해할 수 있습니다. 초보자를 위한 지점에 왔습니다. 그리고 포럼에서 처음으로. 그리고 나는 아름다운 대답을 가지고 있습니다.

"천재에게는 천재적인 답이 있다"

 
agat8430 :


그럼, 해킹된 가문비나무처럼 보이지 않도록 코드를 편집하는 방법을 알려주세요. 모든 것을 이해할 수 있습니다. 초보자를 위한 지점에 왔습니다. 그리고 포럼에서 처음으로. 그리고 나는 아름다운 대답을 가지고 있습니다.

"천재에게는 천재적인 답이 있다"

초보자를 위해 먼저:

포럼 내비게이터 및 자주 묻는 질문에 대한 답변. 적극 추천하는 독서! (   1 2 3 4 5 6 ) 51 2011년 2월 18일 자주하는 질문