전문가 자문 커뮤니티 - 페이지 10

 
다음 주제에 대해 논의할 것을 제안합니다.
하나의 Expert Advisor 내에서 여러 Symbols 및/또는 TimeFrames에서 거래하는 것이 얼마나 관련성이 있습니까?

이제 나는 앉아서 생각하고 있습니다 - 이것을 위해 특별히 설계된 symbol_lib와 전문가의 템플릿을 게시해야합니까 =)
그리고 나는 그런 필요가 없다고 생각합니다... 거래가 다른 계정에서 이루어지면 여전히 여러 터미널을 시작 해야 하고 한 번에 하나씩이라면 여러 창을 열어야 합니다. 그리고 덜 혼란 ...

그들에 대한 의견과 주장을 듣는 것은 흥미로울 것입니다.)
 
후행 정지와 관련하여 다음을 수행하십시오.
int CurPrice_p=Bid/Point; //текущая цена в пунктах
int CurSLoss=OrderStopLoss( )/Point; //текущий стоплосс в пунктах
int TS=40; //значение трейлингстопа в пунктах
if(TS>=5)
{
    int TStep=2; //минимальный шаг трейлинг стопа
    if(TStep<1) TStep=1; //проверка шага трейлинга
    {
        if(MathAbs(CurPrice_p-CurSLOss)>=TS+TStep)
        {
            if(CurPrice_p>CurSLOss)
            {
                double NewSLoss=(CurPrice_p-TS)*Point;
                изменить уровень стоплосс ордера на новый
            }
            if(CurPrice_p>CurSLOss)
            {
                NewSLoss=(CurPrice_p+TS)*Point;
                изменить уровень стоплосс ордера на новый
            }
        }
    }
}
 
후행 정지와 관련하여 다음을 수행하십시오.

그리고 이것은 생각입니다 ... 이것은 생각 이상입니다-이것은 아이디어입니다))
언젠가는 전문가가 수집한 오류를 정리하고 거래 기능의 구현에 대해 생각할 것입니다. 다음주에 공유합니다 ;)


다음 주제에 대해 논의할 것을 제안합니다.
하나의 Expert Advisor 내에서 여러 Symbols 및/또는 TimeFrames에서 거래하는 것이 얼마나 관련성이 있습니까?


투표 결과에 따르면(1 - 반대(komposter), 0 - 찬성, 나머지 - 기권) 이 스레드에서 다중 문자 거래에 대한 쓰레기를 퍼뜨리지 않기로 결정했습니다 =)
여전히 관심이 있는 사람이 있으면 써주세요 - 라이브러리를 공유하겠습니다 ;-|
 
주제가 http://forum.viac.ru/viewtopic.php?t=2973 으로 이동했습니다.
 
나는 백 테스트를 실행한 후 위치를 시각적으로 분석하는 데 유용하다고 생각하는 작은 유틸리티를 게시하고 있습니다. 온라인 거래 내역을 분석하고 다른 사람의 진술을 구문 분석하는 아이디어를 더욱 발전시킬 수 있습니다.
쓰다:
1. mqh 확장자를 가진 이 파일을 Tracert.mqh로 전문가\include\ 폴더에 씁니다.
2. 맨 처음에 Expert Advisor에 #include <Tracert.mqh> 줄을 추가합니다.
 #property copyright "Rosh, 대화만 가능"
#속성 링크 "http://********************"
#include <stdlib.mqh>
#include <추적.mqh>
extern double 이익실현 = 200;
extern 이중 로트 = 0.1;
extern 이중 후행 정지 = 0;
외부 이중 손절매 = 65;



3. 맨 처음에 start() 블록에 SetTrace() 함수를 삽입합니다.

 정수 시작()
   {
   int 티켓, 합계, totalExpert; 
   //------------------------------------------------ ------
   // 코드를 단순화하고 속도를 높이기 위해 필요한
   // 임시 변수의 지표 데이터

   설정 추적();



4. EA를 실행한 후 파일을 열고 다음과 같이 얻습니다.



유틸리티 코드 자체:

//+------------------------------------------------------------------+
//|                                                      Tracert.mq4 |
//|                                                             Rosh |
//|                           http://forexsystems.ru/phpBB/index.php |
//+------------------------------------------------------------------+
#property copyright "Rosh"
#property link      "http://forexsystems.ru/phpBB/index.php"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
double tr_AOPLong,tr_AOPShort;
double tr_LongLots,tr_ShortLots;
int tr_CurrLongOrders,tr_CurrShortOrders;
int tr_Total,tr_Counter;
int tr_PrevLongOrders,tr_PrevShortOrders;
int tr_CurrTotalOpenedOrders,tr_PrevTotalOpenedOrders;
double tr_CurrBalance,tr_PrevCurrBalance;
color tr_ProfitColor=Lime, tr_LossColor=DeepPink,tr_LongAOPColor=Blue,tr_ShortAOPColor=Red, tr_CurrCloseColor;
int tr_CloseLabelArrow=108, tr_AOPLabelArrow=159;
bool tr_CloseLong,tr_CloseShort;
double tr_CloseLabelPrice;
int tr_CloseLabelShift=20;
int tr_CounterCloseLabel=0,tr_CounterAOPLabel=0;
int tr_Bars;

void SetTrace()
  {
//---- 
   if (IsTesting()&&(tr_Bars!=Bars))
      {
      tr_CloseLong=false;
            tr_CloseShort=false;
      tr_AOPLong=0.0;
      tr_AOPShort=0.0;
      tr_LongLots=0.0;
      tr_ShortLots=0.0;
      tr_CloseLabelShift=iATR(NULL,0,50,1)*3.0/10.0/Point;
      if (tr_CurrBalance==0.0)   
         {
         tr_CurrBalance=AccountBalance();
         tr_PrevCurrBalance=AccountBalance();
         }
//----------------Проверка открытых позиций ---------------------------
      tr_CurrLongOrders=0;
      tr_CurrShortOrders=0;
      tr_CurrTotalOpenedOrders=0;
      tr_Total=OrdersTotal();
      if (tr_Total>0)// есть открытые позиции
         {
         for (tr_Counter=0;tr_Counter<tr_Total;tr_Counter++)// подсчет открытых позиций
            {
            OrderSelect(tr_Counter, SELECT_BY_POS, MODE_TRADES);
            if (OrderType()==OP_BUY) 
               {
               tr_CurrLongOrders++;
               tr_AOPLong=tr_AOPLong+OrderLots()*OrderOpenPrice();
               tr_LongLots=tr_LongLots+OrderLots();
               }
            if (OrderType()==OP_SELL) 
               {
               tr_CurrShortOrders++;
               tr_AOPShort=tr_AOPShort+OrderLots()*OrderOpenPrice();
               tr_ShortLots=tr_ShortLots+OrderLots();
               }
            }// подсчет открытых позиций


            //---------------  усреднение ---------------------
            
         if (tr_CurrLongOrders>0) tr_AOPLong=tr_AOPLong/tr_LongLots;
         if (tr_CurrShortOrders>0)tr_AOPShort=tr_AOPShort/tr_ShortLots;
            
            //---------------  усреднение ---------------------
            
         if (tr_AOPLong>0.0)
            {
            ObjectCreate("AOP"+tr_CounterAOPLabel,OBJ_ARROW,0,Time[1],tr_AOPLong);// не совсем корректно, но пока пойдет
            ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_ARROWCODE,tr_AOPLabelArrow);
            ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_COLOR,tr_LongAOPColor);
            tr_CounterAOPLabel++;
            }

         if (tr_AOPShort>0.0)
            {
            ObjectCreate("AOP"+tr_CounterAOPLabel,OBJ_ARROW,0,Time[1],tr_AOPShort);// не совсем корректно, но пока пойдет
            ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_ARROWCODE,tr_AOPLabelArrow);
            ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_COLOR,tr_ShortAOPColor);
            tr_CounterAOPLabel++;
            }



//         Print("Long=",tr_CurrLongOrders,"  tr_AOPLong=",tr_AOPLong,"    ***   Short=",tr_CurrShortOrders,"   tr_AOPShort=",tr_AOPShort);            
         tr_CurrTotalOpenedOrders=tr_CurrLongOrders+tr_CurrShortOrders;
         if ((tr_CurrTotalOpenedOrders!=tr_PrevTotalOpenedOrders)||(tr_PrevLongOrders!=tr_CurrLongOrders)||(tr_PrevShortOrders!=tr_CurrShortOrders)) // изменилось колчиство ордеров в рынке
            {
            if (tr_PrevLongOrders>tr_CurrLongOrders) // изменилось число ордеров в Long
               {
               tr_CloseLong=true;            
               tr_CloseLabelPrice=High[1]+tr_CloseLabelShift*Point;
               }
            if (tr_PrevShortOrders>tr_CurrShortOrders) // изменилось число ордеров в Short
               {
               tr_CloseShort=true;            
               tr_CloseLabelPrice=Low[1]-tr_CloseLabelShift*Point;
               }
            tr_PrevLongOrders=tr_CurrLongOrders;
            tr_PrevShortOrders=tr_CurrShortOrders;
            tr_PrevTotalOpenedOrders=tr_CurrTotalOpenedOrders;
            }
         }// есть открытые позиции

//---------------- Проверка изменения Баланса

      tr_CurrBalance=AccountBalance();  
      if (tr_CurrBalance!=tr_PrevCurrBalance)// проверка изменения Balance
         {
         if (tr_CurrBalance-tr_PrevCurrBalance>0.0) tr_CurrCloseColor=tr_ProfitColor; else tr_CurrCloseColor=tr_LossColor;
         tr_PrevCurrBalance=tr_CurrBalance;
         //------------------ установка Метки закрытия --------------------
         ObjectCreate("Close"+tr_CounterCloseLabel,OBJ_ARROW,0,Time[1],tr_CloseLabelPrice);
         ObjectSet("Close"+tr_CounterCloseLabel,OBJPROP_ARROWCODE,tr_CloseLabelArrow);
         ObjectSet("Close"+tr_CounterCloseLabel,OBJPROP_COLOR,tr_CurrCloseColor);
         tr_CounterCloseLabel++;
         //------------------ установка Метки закрытия --------------------
         }// проверка изменения Balance   
      }//(IsTesting()) 
//----
   tr_Bars=Bars;
   return(0);
  }
//+------------------------------------------------------------------+
 
테스터 출시와 관련하여(조금 늦었지만) trade_lib_tester 및 info_lib_tester를 게시합니다. 그들의 일반적인 버전은 테스트를 원하지 않기 때문에 =)))
같은 것을 사용하십시오. 포함 줄의 이전 이름을 새 이름으로 변경하기만 하면 됩니다.

파일은 http://forum.viac.ru/viewtopic.php?t=2973 에 있습니다.
 
남. 퇴비!

Wiack, Alpari, Forexsitems 또는 Finlist의 모든 최신 파일과 이전 파일을 모두 게시할 수 있습니까? 일반적으로 파일을 첨부할 수 있는 곳입니다. 예, 찾기가 더 쉬울 것입니다. 미리 감사드립니다.
 
남. 퇴비!

Wiack, Alpari, Forexsitems 또는 Finlist의 모든 최신 파일과 이전 파일을 모두 게시할 수 있습니까? 일반적으로 파일을 첨부할 수 있는 곳입니다. 예, 찾기가 더 쉬울 것입니다. 미리 감사드립니다.


http://forum.viac.ru/viewtopic.php?t=2973

지침과 함께 설명은 나중에 전송됩니다 ...
 
trade_lib_tester&info_lib_tester.rar - 업데이트 게시됨 - http://forum.viac.ru/viewtopic.php?t=2973


시험용
마지막 업데이트 - 13.07.2005 14:09
테스트 속도 10배 이상 증가
 
향상된 라이브러리 - http://forum.viac.ru/viewtopic.php?p=65111#65111

변경 사항 - 무리. 그리고, 그것은 거대합니다.
오류 저항은 완전히 새로운 수준에 있으며 정보는 더 완전하고 인터페이스는 더 친숙합니다 ;) ...

일반적으로 이것은 완전히 새로운 라이브러리라고 말할 수 있습니다 =)
건강하세요 ;)