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

 
tol64 :


고맙습니다. 매우 이해할 수 있습니다. 이런 식으로 설명하면 누구나 이해할 것입니다.)))

질문 하나 더. 검색에서 질문의 유사한 변형을 많이 찾았지만 내 질문은 약간 다르게 질문될 것입니다.))

그래프 오정렬. "진짜 ???"를 보려면 결과적으로 나는 지속적으로 시간 프레임을 다시 계산해야 합니다. 즉, 로그에서 이 주제에 대한 오류가 있는 것을 확인하면 따옴표 아카이브로 이동하여 모든 기간을 다시 계산합니다. 예를 들어 테스터에서는 컨트롤 포인트별로 테스트를 수행합니다. 다 괜찮아. 그런 다음 형성된 막대로 가정해 보겠습니다. 다 괜찮아. 이제 다시 제어점에 대한 테스트를 수행하면 로그의 그래프 사이에 불일치가 다시 관찰됩니다. 이게 뭔가요...? ))) 이 불행에 반대하는 것이 있습니까?


IMHO, "모든 진드기 ..."또는 "시가에서 ..."의 두 가지 테스트 모델 만 사용하십시오 ( 이를 위해서는 올빼미의 새 막대 형성에 대한 제어를 구성해야 함) - 이들은 " 신뢰할 수있는"컷 - 헛된 걱정하지 마십시오 ... :-))) "체크 포인트"는 그만한 가치가 없습니다.

필요한 악기에 대한 짤막한 이야기를 다운받아 가보세요... :-)))

 
Roman. :


IMHO, "All ticks..." 또는 "By Opening price..."의 두 가지 테스트 모델만 사용합니다(이를 위해서는 올빼미의 새 막대 형성에 대한 제어를 구성해야 함). "신뢰할 수 있는" 컷 - 그리고 헛되이 걱정하지 마십시오 ... :-))) "체크포인트"는 그만한 가치가 없습니다.

필요한 도구에 대한 짧은 이야기를 다운로드하고 이동하십시오... :-)))


링크가 깨졌어요...

내 접근 방식에서 "All ticks"를 사용하면 영원히 기다려야합니다.)) 10 년 역사에 대해 테스트하고 있습니다. EA에서 조건과 후행은 형성된 막대를 기반으로 합니다. 그러나 모든 틱에서 확인해야 하는 몇 가지 조건이 있습니다. 예를 들어, 손절매가 발동되고 자금 관리 시스템의 조건에 따라 로트 크기가 변경된 경우 로트를 변경하려면 모든 보류 주문을 다시 설치해야 합니다. 또는 조건에 필요한 경우 보류 중인 주문을 삭제 합니다. 결국, 신뢰할 수 있으려면 모든 것이 명확해야합니다.) 따라서 원칙적으로 일부 기록을 모든 진드기와 비교했기 때문에 기준점으로 충분합니다. 같은.

그렇다면 이러한 오류를 구문 분석하고 제거하는 데 도움이 되는 것은 무엇입니까? 그리고 링크가 깨졌습니다.

 
tol64 :


링크가 깨졌어요...

내 접근 방식에서 "All ticks"를 사용하면 영원히 기다려야합니다.)) 10 년 역사에 대해 테스트하고 있습니다. EA에서 조건과 후행은 형성된 막대를 기반으로 합니다. 그러나 모든 틱에서 확인해야 하는 몇 가지 조건이 있습니다. 예를 들어, 손절매가 발동되고 자금 관리 시스템의 조건에 따라 로트 크기가 변경된 경우 로트를 변경하려면 모든 보류 주문을 다시 설치해야 합니다. 또는 조건에 따라 보류 중인 주문을 삭제하기만 하면 됩니다. 결국, 신뢰할 수 있으려면 모든 것이 명확해야합니다.) 따라서 원칙적으로 일부 기록을 모든 진드기와 비교했기 때문에 기준점으로 충분합니다. 같은.

그렇다면 이러한 오류를 구문 분석하고 제거하는 데 도움이 되는 것은 무엇입니까? 그리고 링크가 깨졌습니다.


재업로드

그리고 여기.

 

좋은 오후입니다. 신사 숙녀 여러분.

코드를 알아낼 수 있도록 도와주세요. 논리는 이해하지만 제대로 설명하는 방법을 모르겠습니다. 크레인이 더 짧습니다.

다음은 고문의 일부입니다.

total=OrdersTotal();
if(total<1)

{

while (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2) //Пока это условие выполняется открывать только селл при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)>0.7)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)<0.7))
{

OrderSend(Symbol(), OP_SELL, lots, NormalizeDouble(Bid, Digits), 3, /*Ask+10*Point*/0, /*Bid-10*Point*/0, "ADX sell", magic, 0, CLR_NONE);
}

while (d_pl_1>d_mn_1 && (d_pl_0-d_mn_0)>=2) // Пока это условие выполняется открывать только Бай при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)<0.3)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)>0.3))
OrderSend(Symbol(), OP_BUY, lots, NormalizeDouble(Ask, Digits), 3, /*Bid-10*Point*/0, /*Ask+10*Point*/0, "ADX buy", magic, 0, CLR_NONE);

}
}
}
}

올바르게 배열하는 방법을 알려주십시오. 진심으로, 데니스.

 
Roman. :


재업로드

그리고 여기.


고맙습니다. 이 링크에 따르면, 뿐만 아니라 내가 필요로 하는 가장 중요한 것이 언급되지 않았습니다.

견적이 온라인 터미널에 도착하면 불일치가 없도록 시간 프레임을 주기적으로 다시 계산해야 합니다.

오프라인 모드에서는 이러한 문제가 발생하지 않습니다.)) 이것이 첫 번째입니다.

이제 두 번째입니다.

 for (pos = 0 ; pos < OrdersHistoryTotal(); pos++)
    {   OrderSelect (pos,SELECT_BY_POS,MODE_HISTORY);
        ... работа с ордером ...  }

그렇게 하면 파일에 쓰기가 오류 없이 발생합니다. 즉, 파일의 모든 것이 의도한 대로 보입니다. 당신이 그것에 대해 자신있게 말한 대로 내가 한다면:

 for (pos = 0 ; pos < OrdersHistoryTotal() - 1 ; pos++)
    {   OrderSelect (pos,SELECT_BY_POS,MODE_HISTORY);
        ... работа с ордером ...  }

, 파일이 잘못 쓰여집니다. 개별 사례가 있음이 분명합니다.)))

 
일정이 변경되었습니다.
smartemiy :

좋은 오후입니다.

아시는 분들의 도움이 필요합니다!!!

잔액 감소가 이미 20%에 도달한 경우 거래를 중단하고 이 수치를 변경할 수 있다고 고문에게 지정하는 방법은 무엇입니까?

이것은 이미 포럼에서 설명되었을 수도 있습니다. 죄송합니다. 내가 눈치 채지 못했을 수도 있습니다.

미리 감사드립니다!

즐거운 거래!!!!!

 
granit77 :
일정이 변경되었습니다.


예를 들어, 그래서...

 extern int MaxLoss = 90 ;           // Максимально допустимая просадка в процентах от баланса

...     

static datetime prevtime = 0 ;       // по ценам открытия
bool IsExpertFailed = false;
bool IsExpertStopped = false;

      

//+------------------------------------------------------------------+
//| Старт робота                                                     |
//+------------------------------------------------------------------+

int init()
{
   if (Time[ 0 ] == prevtime)   return ( 0 );   //ждем нового бара
   prevtime = Time[ 0 ];                   //если появился новый бар , включаемся 

   IsExpertStopped = false;
   if (!IsTradeAllowed())
   {
       Comment ( "Необходимо разрешить советнику торговать" );
      IsExpertStopped = true;
       return ( 0 );
   }
      
   if (!IsTesting())
   {
       if (IsExpertEnabled())
      {
         Comment ( "Советник запустится следующим тиком" );
      }
       else 
      {
         Comment ( "Отжата кнопка \"Разрешить запуск советников\"" );
      }
   }
 return ( 0 );
}
  
//+------------------------------------------------------------------+
//| Завершение работы робота                                         |
//+------------------------------------------------------------------+

int deinit()
{
   return ( 0 );
}
  
//+------------------------------------------------------------------+
//| Обработка сигнала                                                |
//+------------------------------------------------------------------+
  
int start()     // -----------------------СТАРТ ЭКСПЕРТА--------------- 
{
  
 
   if (Time[ 0 ] == prevtime)   return ( 0 );   //ждем нового бара
   prevtime = Time[ 0 ];                   //если появился новый бар , включаемся 

   if (IsExpertStopped)
   {
       Comment ( "Не удалось инициализировать советник!" );
       return ( 0 );
   }
   
   if (IsExpertFailed)
   {
       Comment ( "Критическая ошибка! Советник остановлен." );
       return ( 0 );
   }
   
         
   // ------------------------------------------------Ищем наш ордер---------------------------------

   int orderType;
   for ( int orderIndex = ( OrdersTotal () - 1 ); orderIndex >= 0 ; orderIndex--)
   {
       if (! OrderSelect (orderIndex, SELECT_BY_POS))
      {
         continue ;
      }

       if ((OrderSymbol() != Symbol ()) || (OrderMagicNumber() != MagicNumber))
      {
         continue ;
      }

      orderType = OrderType();
       if ((orderType != OP_BUY) && (orderType != OP_SELL))
      {
         continue ;
      }
          ticket = OrderTicket( );                         // Номер ордера
          orderLots = OrderLots();                         // Lots   
          orderProfit = OrderProfit() + OrderSwap();       // Profit
          Price = OrderOpenPrice();                         // Цена открытия рыночного ордера
          SL =  OrderStopLoss();                           // Значение StopLoss ордера
          TP = OrderTakeProfit();                           // Значение TakeProfit ордера
          
             if (ticket> 0 )                                               // Если позиция открылась
                    {
                             while ( OrderSelect (ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep ( 100 );
                                 }
                                   double OpenPrice=OrderOpenPrice();
      
                              
                                  
                           if (orderType == OP_BUY) 
                              {
      
                               }
            
                             if (orderType == OP_SELL) 
                                 {
       
                                 }   
                            
                    }

       // Проверка на предельную просадку
      
       double loss = - ((orderProfit * 100.0 ) / AccountBalance());
       if (loss > MaxLoss)
      {
         Print ( "MaxLoss" );
         CloseAllOrders(MagicNumber);
         IsExpertFailed = true;
         return ( 0 );
      }
    
              
       
}
   
 
지연 설정 방법을 알려주세요. 밀리초 단위로 가능합니다. 쓰는 법을 자꾸 잊어요.
 
그리고 아무도 당신에게 모든 직위를 빨리 닫는 스크립트를 말하지 않을 것입니다. 찾을 수 없습니다. 코드를 보고 싶습니다.
 
FOReignEXchange :
그리고 아무도 당신에게 모든 포지션을 빨리 닫는 스크립트를 말하지 않을 것입니다. 찾을 수 없습니다. 코드를 보고 싶습니다.
검색하면 50개의 조각이 표시됩니다.