포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 102

 
Dozol :


로저, 이해할 수 없어!

그들은 차트에 수평선을 던지고 가격을 수정하고 선을 삭제했습니다. 더 이상 필요하지 않습니다. 이 가격에 바로 주문합니다.

실수는 어디에 있습니까? 그리고 매도 스톱이 열리지 않는 이유는 무엇입니까?

수평선의 가격 값만 필요한데 가격을 계속 추적하는 이유는 무엇입니까?

설명하다!!! 돕다! 자세한 내용을 부탁드립니다!

판매 중지와 함께 - 흥분, 열릴 것입니다.

이제 라인에 대해. 라이브 거래를 사용하면 차트를 보고 수평선 을 던집니다. 조건이 적합합니다. 선이 삭제되고 주문이 열리며 조건이 적합하지 않습니다. 선이 삭제되고 주문이 열리지 않습니다. . 이것이 간단한 단축키 스크립트보다 어떻게 더 낫습니까? 테스터에서 선을 던지려면 시각화를 켜고 차트를 다시 봐야 합니다. 최적화는 할 수 없습니다. 일반적으로 이것이 왜 테스터에 밀어 넣어야하는지 이해하지 못합니다.

 
borilunad :
죄송합니다! 그럼 빨리 변기에 눕고 자! 좋은 아침! ;)
확인. 그렇게 풀리지 않는 미스터리가 아닌가 싶다. 그러나 지금까지는 목발 만 머리에 올라갑니다. 목발법은 거트법이 아니라...
 
좋은 사람들이여, 무엇이 잘못되었는지 말해주세요. 막대 0의 첫 번째 틱에서 열리는 매도 거래의 경우, 손절매 는 첫 번째 캔들의 고점보다 30핍(5개의 부호) 위에 위치해야 합니다. 이렇게 썼는데 스톱로스는 전혀 안 넣습니다.
     Price = NormalizeDouble (Bid, Digits ); // округляем до нужного нам числа цифр после запятой
     if (StopLoss > 0 )
     if (Bid < iHigh( Symbol (), 0 , 1 )) 
     {
       StopLoss = iHigh( Symbol (), 0 , 1 )+ 30 * Point ;
       SL= Price + StopLoss* Point ;
       SL = NormalizeDouble (SL, Digits ); // округляем до нужного нам числа цифр после запятой
      }
 
artmedia70 :

당신의 손가락은 어떻습니까? 시간과 가격으로 마감 마감에 대해 어떻게 알 수 있습니까? 물론 혼자 생각할 수는 있지만 나에게는 이미 아침 7시 43분이고 아직 잠자리에 들지 않았다.


7.43하고 잠자리에 들지 않았다면.. 즉, 성배 가 쓰여 있다고 가정하겠습니다!
[삭제]  
alexey1979621 :
좋은 사람들이여, 무엇이 잘못되었는지 말해주세요. 막대 0의 첫 번째 틱에서 열리는 매도 거래의 경우, 손절매는 첫 번째 캔들의 고점보다 30핍(5개의 부호) 위에 위치해야 합니다. 이렇게 썼는데 스톱로스는 전혀 안 넣습니다.

StopLoss = iHigh( Symbol (), 0 , 1 )+ 30 * Point ;

이것은 이미 필요한 손절매 수준입니다(예: 1.5000+30*0.00001 = 1.5003).


SL= Price + StopLoss* Point ; 
가격StopLoss* 포인트 를 추가하는 이유 ( 1.5003*0.00001=0.000015). SL은 가격과 거의 같아지므로 손절매가 발생하지 않습니다.
 
손절매는 아직 설정되지 않았지만 taik 이익은 작동합니다. 손절매 및 이익실현 코드 첨부
Price = NormalizeDouble (Bid, Digits );  
     if (StopLoss > 0 )
     if (Bid < iHigh( Symbol (), 0 , 1 )) 
      {
       StopLoss = iHigh( Symbol (), 0 , 1 )+ 30 * Point ;
       SL = NormalizeDouble (SL, Digits ); 
      }
       else SL = 0 ;
       if (TakeProfit > 0 )
      {
       TP = Price - TakeProfit* Point ;
       TP = NormalizeDouble (TP, Digits ); 
      }
       else TP = 0 ;
      { 
      ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid,Slippage,SL,TP, "Pattern_1" ,Magic, 0 ,Red);
       return ;
      }
 
artmedia70 :
1. 마지막으로 닫힌 위치(MODE_HISTORY)를 찾고 있습니다.
2. 테이크에 의해 닫혀있는 경우(또는 가까운 경우) --> 영업시간 기억 -->
3. 모든 오픈 포지션(MODE_TRADES)에 대해 반복하고 기억된 오픈 시간(2단계부터)과 비교 --> 테이크업에 의해 청산된 포지션(2단계부터) 오픈에 저장된 시간이 가장 큰 경우 다른 오픈 포지션의 오픈 시간 --> 마지막 오픈 포지션이 테이크업에 의해 마감되었음을 의미합니다 -->
4. 우리는 다른 모든 것을 잘라내거나 삭제합니다.


흠. 그가 쓴 것 같습니다. 그러나 결과는 같지 않습니다..

나에게 일어난 일은 다음과 같습니다.

 //+-------------------------------------------------------------------------------------+
//| Получаем состояние последней позиции (Открыта или закрыта)                          |
//+-------------------------------------------------------------------------------------+
datetime GetLastOrderState()
{
   datetime lastOrderCloseTime = - 1 ,               // Время закрытия последнего открытого ордера
            lastOOTMarket = - 1 ,           // Время открытия последнего открытого ордера рыночного
            lastOOTHist = - 1 ;             // Время открытия последнего открытого ордера из истории
   
   for ( int i=OrdersHistoryTotal()- 1 ; i>= 0 ; i--)
   {
       if (! OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
       if (OrderType() > 1 ) continue ;               // Все удалённые отложки нас не интересуют..
  
       if (lastOrderCloseTime < OrderCloseTime())   // Находим время закрытия..
          lastOrderCloseTime = OrderCloseTime();   // ..последней закрытой позиции в истории
      
       if ( MathAbs (OrderTakeProfit() - OrderOpenPrice()) < i_tp * pt) return ( 0 );
      
      lastOOTHist = OrderOpenTime();   // Тогда время открытия последней закрытой позиции из истории
   }
   
   Comment ( "Время открытия последнего открытого ордера = " , lastOOTHist);
  
   for ( int h= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {   
       if (! OrderSelect (h, SELECT_BY_POS, MODE_TRADES)) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
      {
         if (lastOOTMarket < OrderOpenTime())
             lastOOTMarket = OrderOpenTime();
  
         if (lastOOTMarket < lastOOTHist)       // Если время открытия последнего открытого ордера (рыночного) ниже последнего открытого ордера из истории..
             lastOrderCloseTime = OrderCloseTime(); // Значит это искомый ордер
      }
   }

   Comment ( "Время закрытия последнего открытого ордера = " , lastOrderCloseTime);
   return (lastOrderCloseTime);
}
 
alexey1979621 :
좋은 사람들이여, 무엇이 잘못되었는지 말해주세요. 막대 0의 첫 번째 틱에서 열리는 매도 거래의 경우, 손절매는 첫 번째 캔들의 고점보다 30핍(5개의 부호) 위에 위치해야 합니다. 이렇게 썼는데 스톱로스는 전혀 안 넣습니다.

어쨌든 여기에 뭔가가 있습니다. 매도 청산은 항상 BID가 아니라 ASK라는 사실부터 시작하겠습니다.
[삭제]  
alexey1979621 :
손절매는 아직 설정되지 않았지만 taik 이익은 작동합니다. 손절매 및 이익실현 코드 첨부

Price = NormalizeDouble (Bid, Digits );  
     if (StopLoss > 0 )
     if (Bid < iHigh( Symbol (), 0 , 1 ))               // Здесь еще STOPLEVEL нужно проверять, иначе частые ошибки будут
      {
       StopLoss = iHigh( Symbol (), 0 , 1 )+ 30 * Point ;   // Здесь вместо переменной StopLoss попробуйте поставить SL
       SL = NormalizeDouble (SL, Digits ); 
      }
       else SL = 0 ;
       if (TakeProfit > 0 )
      {
       TP = Price - TakeProfit* Point ;
       TP = NormalizeDouble (TP, Digits ); 
      }
       else TP = 0 ;
      { 
      ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid,Slippage,SL,TP, "Pattern_1" ,Magic, 0 ,Red);
       return ;
      }
 
hoz :


흠. 그가 쓴 것 같습니다. 그러나 결과는 같지 않습니다..

나에게 일어난 일은 다음과 같습니다.

마지막으로 마감된 주문을 검색할 때 가장 최근에 마감된 것을 먼저 찾아야 하지만 테이크업에 의한 클로징을 확인 하려면 사이클 외부로 이동해야 합니다. 그렇다면 사이클에서 포착된 첫 번째 시간을 기억하고 가장 최근이 아닌 take에 의해 닫힌 시간을 기억합니다.