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

 
alexey1979621 :
안녕하세요 여러분! 질문은 ~이야. 첫 번째, 두 번째, 세 번째 양초의 고점과 저점 사이의 거리를 측정하는 방법과 각 양초의 이러한 거리가 최소한 10포인트 이상이어야 한다는 조건을 규정합니다. 미리 감사드립니다.

다음은 https://docs.mql4.com/en/predefined/variables 에 도움이 되는 시장 환경 변수입니다.
 
artmedia70 :
로봇의 등장... :)


아하하하. yosuf, 사이보그가 당신을 보냈습니다... )))))))
 
artmedia70 :

다음은 기능을 테스트하기 위한 EA입니다. 사실 그 안에는 함수 자체와 그 호출이 있습니다. 전화를 걸기 전에 최대 4줄의 메시지를 준비해야 합니다. 내 기억이 맞다면 각 줄의 길이는 64자를 넘지 않아야 합니다. 그래서 하나의 메시지를 여러 줄로 나누었습니다. 한 메시지의 각 줄은 고유한 색상으로 표시할 수 있습니다. 코드에서 모든 것이 명확해 보입니다. 먼저 메시지 라인을 준비한 다음 함수를 호출합니다. 나는 거기에 구체적으로 언급하지 않았습니다. 나는 오랫동안 한 호흡으로 썼습니다. 지금은 그것이 무엇을 위한 것인지 잊었습니다. 질문이 있으면 기억할 것입니다. 이제 가장 필요한 것만 기억했습니다.

음, 칠면조:

이런 ... 이해 바랍니다.

물론 칠면조 창을 띄우는 대신 배경을 만들어 메인 차트에 띄워도 되지만 너무 게을러서... :)



Artyom, 나는 당신의 코드를 보았고 칠면조는 일반적으로 폭탄입니다 :))))). 사실, 더 큰 관점에서 보면 모든 것이 명확합니다. 비록 제가 구현에서 몇 순간을 보았지만, 제가 했을 것과는 조금 다르지만 이미 사소한 일입니다.

흥미로운 점입니다. 칠면조 전문가에게 있는 것만 인쇄됩니다. 그러나 그것을 당신에게 유리하게 사용하는 방법이 있습니까?

 
hoz :


Artyom, 나는 당신의 코드를 보았고, 칠면조는 일반적으로 폭탄입니다 :))))). 사실, 더 큰 관점에서 보면 모든 것이 명확합니다. 비록 제가 구현에서 몇 순간을 보았지만, 제가 했을 것과는 조금 다르지만 이미 사소한 일입니다.

흥미로운 점입니다. 칠면조 전문가에게 있는 것만 인쇄됩니다. 그러나 그것을 당신에게 유리하게 사용하는 방법에는 옵션이 있습니까?

어떻게 든 질문을 이해하지 못했습니다 ... Print() 함수를 대체합니다 . 표시기 창에 모든 메시지를 표시합니다. 한 메시지의 각 줄에 색상을 설정할 수 있습니다(예: 메시지 중요도의 우선 순위). 인쇄보다 낫습니다. 그게 다야.
 

같은 기능입니다. 전문가는 그 기능이 무엇을 하는지 보여주기 위해서만 존재합니다. 따라서 이 기능을 사용 하여 Expert Advisor의 메시지를 표시 하십시오 .

그 Expert Advisor는 그 사용 원리만을 보여줍니다.

 
artmedia70 :

같은 기능입니다. 전문가는 기능이 무엇을 하는지 보여주기 위해 존재합니다. 따라서 이 기능을 사용 하여 Expert Advisor의 메시지를 표시 하십시오 .

그 Expert Advisor는 그 사용 원리만을 보여줍니다.


그렇긴 하지만.. 기능이네.. 차를 몰고 가다가 제일 중요한걸 놓쳤어.. :(
 

새로운 헤드가 등장했습니다. 이를 실현하기 위해 필요한 것은 다음과 같습니다.

1. 시장에서 일정 수의 주문 이 수집되고 있습니다. 시장에는 항상 시장 및 보류 중인 주문이 있습니다.

2. 어느 시점에서 지금까지 열린 마지막 주문이 TP에 의해 닫히면 다음을 포함하여 열려 있고 보류 중인 모든 주문을 닫을 필요가 있습니다.

나는 이것을 다음과 같이 했다(나는 그것을 start() 함수에 넣었다):

 for ( int ord= OrdersTotal ()- 1 ; ord>= 0 ; ord--)
   {
       if (! OrderSelect (ord,SELECT_BY_POS)) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
        
      g_ticket = OrderTicket();
      g_type = OrderType();
              
       // Блок модификации ордеров       
       if (i_sl != 0 || i_tp != 0 )
      {
         if (OrderStopLoss() == 0 && OrderTakeProfit() == 0 )
         {
            OrdersModifyer(g_ticket);
         }
      }
       // Закрытие всех ордеров, если последний ордер закрыт
       if (GetLastOrderState() != 0 )              
      {
           if (g_type > 1 )
          {
              DeletePendingOrders(g_ticket);
          }
           else
          {
              CloseMarketOrders(g_ticket);
          }
      }
   }

GetLastOrderState() 함수는 마지막 주문이 마감되었는지 확인합니다.

 //+-------------------------------------------------------------------------------------+
//| Получаем состояние последней позиции (Открыта или закрыта)                          |
//+-------------------------------------------------------------------------------------+
datetime GetLastOrderState()
{
   datetime lastOrderCloseTime = - 1 ,                   // Время закрытия последнего ордера
            lastOrderOpenTime = - 1 ;                     // Время открытия последнего ордера
   
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {
       if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
  
       if (lastOrderOpenTime < OrderOpenTime())
          lastOrderOpenTime = OrderOpenTime();
   }
   Comment ( "Время открытия последнего открытого ордера = " , lastOrderOpenTime);
   for ( int h=OrdersHistoryTotal()- 1 ; i>= 0 ; i--)
   {
       if (! OrderSelect (h, SELECT_BY_POS, MODE_HISTORY)) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
      
       if (OrderOpenPrice() == lastOrderOpenTime)
          lastOrderCloseTime = OrderCloseTime();
   }
   // Comment("Время закрытия последнего открытого ордера = ", lastOrderCloseTime);
   return (lastOrderCloseTime);
}

그렇다면 보류 중인 시장 주문 및 마감 시장 주문을 삭제하는 기능입니다. 뭔가 제대로 작동하지 않는 것을 봅니다. 내 기능은 괜찮습니까?

나는 기능이 이론상 순서대로 되어 있다는 것을 이해합니다. 그러나 여기에는 논리가 없습니다. 이에 대한 생각이 있습니까? 어쨌든, 고문의 주문이 TP에 의해 닫히지 않은 경우에도 신호가 열리면 순식간에 모든 것이 즉시 닫힙니다.

 
hoz :

아하하하. yosuf, 사이보그가 당신을 보냈습니다... )))))))
어쨌든 반응이 좋은 프로게이머. 모든 문제가 그의 몫인 것처럼, 이 운명은 의심의 여지 없이 보상을 하거나 성배 에 걸려 넘어질 것입니다.
 
yosuf :
어쨌든 반응이 좋은 프로게이머. 모든 문제가 그의 몫인 것처럼, 이 운명은 의심의 여지 없이 보상을 하거나 성배에 걸려 넘어질 것입니다.


그리고 구체적인 내용도 없었고 그에 따라 질문도 있었다. 거기에 뭐라고 대답해야 할지 모르겠어....대답을 하려면 최대한 상황을 명확히 하려고 노력해야 한다.
 
hoz :

새로운 헤드가 등장했습니다. 이를 실현하기 위해 필요한 것은 다음과 같습니다.

1. 시장에서 일정 수의 주문이 수집되고 있습니다. 시장에는 항상 시장 및 보류 중인 주문이 있습니다.

2. 어느 시점에서 지금까지 열린 마지막 주문이 TP에 의해 닫히면 다음을 포함하여 열려 있고 보류 중인 모든 주문을 닫을 필요가 있습니다.

나는 이것을 다음과 같이 했다(나는 그것을 start() 함수에 넣었다):

GetLastOrderState() 함수는 마지막 주문이 마감되었는지 확인합니다.

그렇다면 보류 및 마감 시장 주문을 삭제하는 기능입니다. 뭔가 제대로 작동하지 않는 것을 봅니다. 내 기능은 괜찮습니까?

나는 기능이 이론상 순서대로 되어 있다는 것을 이해합니다. 그러나 여기에는 논리가 없습니다. 이에 대한 생각이 있습니까? 어쨌든, 고문의 주문이 TP에 의해 닫히지 않은 경우에도 신호가 열리면 순식간에 모든 것이 즉시 닫힙니다.

Victor, 포지션이 TP에 의해 마감되었는지 확인하는 Kim의 테스트된 기능을 사용합니다.

isCloseLastPosByTake - 마지막 위치를 테이크에 의해 닫는 플래그를 반환합니다. 유용한 기능만에서 찾을 수 있습니다.
그런 다음 모든 것을 닫습니다.