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

 

다음과 같이 결정했습니다.

int nday;

 if(OrdersTotal()==0)

 {

  double lot=(AccountBalance()/ MinLot)*0.01;

  if(center>Ask && pokupaem>0 && prodaem<1 && prodaem1<1 && SelBuyDaily==Vhodim1 && proverka==1)

  {

   x=OrderSend(Symbol(),OP_BUY,lot,Ask,3,0,0,Komment,Magic,0,Blue);

   nday=DayOfYear();

  }

  if(OrderSelect(x,SELECT_BY_TICKET)==true)

 {

  if((OrdersTotal()>0 && OrderCloseTime()==0 && OrderType()==OP_BUY) && (nday<DayOfYear() || OrderOpenTime()<iTime(NULL,0,0)))

  {

   if(pokupaem>0 && prodaem<1 && Ask+atr<OrderOpenPrice() && proverka==1)

   {

    x=OrderSend(Symbol(),OP_BUY,OrderLots()*Ml,Ask,3,0,0,Komment,Magic,0,Blue);

    nday=DayOfYear();

   }

  }

 }

 

처음으로 사이클에서 포지션의 시작 을 쓰려고 시도했기 때문입니다. 나는 다른 쌍의 개방을 배제하지 않습니다.

그러나 어떤 이유로 루프에서 아무 것도 열지 않습니다! 그것을 여는 데 정말 특별한주기가 필요합니까?! 맞아요 테스터에서만 확인했어요!

나는 평소에 썼다 :

    optal = OrdersTotal ();
     for (op = optal- 1 ; op >= 0 ; op--) 
    { 
       if ( OrderSelect (op,SELECT_BY_POS,MODE_TRADES))
      { 
         if (OrderSymbol() != Symbol ()) continue ;
         if (OrderMagicNumber() != magic) continue ; 
// и т.д.

주문, 위치를 여는 것이 잘못된 것은 무엇입니까? 도와주셔서 감사합니다!

 
borilunad :

처음으로 사이클에서 포지션의 시작을 쓰려고 시도했기 때문입니다. 나는 다른 쌍의 개방을 배제하지 않습니다.

그러나 어떤 이유로 루프에서 아무 것도 열지 않습니다! 그것을 여는 데 정말 특별한주기가 필요합니까?! 맞아요 테스터에서만 확인했어요!

나는 평소에 썼다 :

주문, 위치를 여는 것이 잘못된 것은 무엇입니까? 도와주셔서 감사합니다!



아직 주문이 없으며 주기가 시작되지 않습니다. 일반적으로 주기의 의미는 무엇입니까?
 
borilunad :

처음으로 사이클에서 포지션의 시작을 쓰려고 시도했기 때문입니다. 나는 다른 쌍의 개방을 배제하지 않습니다.

그러나 어떤 이유로 루프에서 아무 것도 열지 않습니다! 그것을 여는 데 정말 특별한주기가 필요합니까?!

나는 평소에 썼다 :

주문, 위치를 여는 것이 잘못된 것은 무엇입니까? 도와주셔서 감사합니다!

사이클은 거래 흐름이 해제되는 것보다 빠르게 실행됩니다. 따라서 다른 사이클 지연 넣어야 합니다. (! IsTradeContextBusy ()) 수면 (100);
 
valeryk :


아직 주문이 없으며 주기가 시작되지 않습니다. 일반적으로 주기의 의미는 무엇입니까?


고맙습니다! 나는 그렇게 생각했다! 따라서 예를 들어 첫 번째 쌍에서 열려면 사이클 없이도 충분하지만 if( OrdersTotal == 0)이면 충분합니다. 그리고 동일하거나 다른 쌍에 대해 다른 주문을 열 때 사이클이 필요하며 작동합니다! 나는 지금 시도 할거야!

오프닝에서 많이 변해야 할 것 같지만, 원칙적으로는 어떻게 해야 하는지 이해했어요! 고맙습니다!

 

사실, 일종의 해로운 논리입니다. 처음에는 잘 안봤는데... 주문을 열때 왜 OrdersTotal() ???

글쎄, 사이클에서 여러 주문을 열어야하는 경우 필요한 주문 수에 따라 사이클을 구성해야합니다. 이 금액을 지속적으로 유지해야 하는 경우 다른 규칙이 적용됩니다.

예를 들어 7개의 주문을 열어야 합니다.

 for ( int i = 0 ; i < 7 ; i++)
{
while (!IsTradeContextBusy()) Sleep ( 100 ); // Ожидание освобождения торгового потока

int ticket = OrderSend (Symbol(), ..............); // Открытие ордера
if (ticket > 0 ) Print ( "Открылся ордер № " , i, " ticket - " , ticket); // Проверка пропусков при открытии.
}
그러나 이것은 짧은 버전입니다. 좋은 것을 위해 주문을 열 때 오류 처리를 삽입해야 할 것입니다.
 
AlexeyVik :

사실, 일종의 해로운 논리입니다. 처음에는 잘 안봤는데... 주문을 열때 왜 OrdersTotal()???

글쎄, 사이클에서 여러 주문을 열어야하는 경우 필요한 주문 수에 따라 사이클을 구성해야합니다. 이 금액을 지속적으로 유지해야 하는 경우 다른 규칙이 적용됩니다.

예를 들어 7개의 주문을 열어야 합니다.

그러나 이것은 짧은 버전입니다. 좋은 것을 위해 주문을 열 때 오류 처리를 삽입해야 할 것입니다.

고맙습니다! 그러나 올빼미가 다른 쌍을 보지 않도록주기가 필요합니다! 실수는 나중에 처리하겠습니다! 로그에 오류 130이 표시되었을 때조차도 기뻤습니다. 그래서 작동했습니다! 내 오류는 외부 기능 에서 처리됩니다! 다시 한번 감사합니다!
 
borilunad :

고맙습니다! 그러나 올빼미가 다른 쌍을 보지 않도록주기가 필요합니다! 실수는 나중에 처리하겠습니다! 로그에 오류 130이 표시되었을 때조차도 기뻤습니다. 그래서 작동했습니다! 내 오류는 외부 기능에서 처리됩니다! 다시 한번 감사합니다!
여기에 논리의 오류가 있습니다. 올빼미는 다른 커플을 볼 수 밖에 없습니다. 다른 기호의 ALREADY OPEN 주문을 처리하지 않도록 할 수 있고 또 그렇게 해야 합니다. 그리고 OrderSend(............) 함수 에서 특정 기호()가 작성되거나 텍스트 형식(예: "EURUSD"...)으로 입력하면 무엇이든 열립니다. 아니면 열어보거나...
 
AlexeyVik :

사실, 일종의 해로운 논리입니다. 처음에는 잘 안봤는데... 주문을 열때 왜 OrdersTotal()???

글쎄, 사이클에서 여러 주문을 열어야하는 경우 필요한 주문 수에 따라 사이클을 구성해야합니다. 이 금액을 지속적으로 유지해야 하는 경우 다른 규칙이 적용됩니다.

예를 들어 7개의 주문을 열어야 합니다.

그러나 이것은 짧은 버전입니다. 좋은 것을 위해 주문을 열 때 오류 처리를 삽입해야 할 것입니다.

틱당 최대 8개의 주문을 열 가능성을 확인하는 좋은 방법입니다. 우리는 그들에게 약속했지만 지금까지 아무도 확인하지 않았습니다.
 
Vinin :

틱당 최대 8개의 주문을 열 가능성을 확인하는 좋은 방법입니다. 우리는 그들에게 약속했지만 지금까지 아무도 확인하지 않았습니다.

아무것도 이해하지 못했다...