무료로 어드바이저를 작성해 드립니다 - 페이지 41

 
Anton Kedo :
주제는 포기
아니, 왜 ... 그들은 " 성배 와 같은 멋진 아이디어가 있습니다"와 같은 응용 프로그램을 위해 가끔 읽습니다. 특히 TK가 없으면.
 
안녕하세요. Ilan(martingale)이 새지 않도록 수정하는 방법에 대한 흥미로운 아이디어가 있습니다. Skype에서 아이디어의 본질을 설명하려고 노력할 것입니다.
 
Evgeniu Semenuta :
안녕하세요. Ilan(martingale)이 새지 않도록 수정하는 방법에 대한 흥미로운 아이디어가 있습니다. Skype에서 아이디어의 본질을 설명하려고 노력할 것입니다.
이전 포스트를 읽어보세요!
 

확인. 나는 기술하려고 노력할 것이다. 가격이 하락했다고 가정해 봅시다. Ilan은 그 이전에 구매했습니다. 당연히 그는 매수에 포지션을 추가하여 로트 크기를 늘리는 식으로 가격이 롤백되거나 저장소가 고갈될 때까지 계속됩니다. 이 옵션을 시도하고 싶습니다. 예를 들어 10개의 무릎에 도달하면 올빼미는 15포인트(이전에 설정된 주문의 총 로트 크기를 2로 나눈 값) 후에 즉시 2개의 보류 주문 을 배치합니다.

1 주문은 이전 10 무릎의 이익 수준에서 손절매 만 설정됩니다.

이전 10 무릎의 이익 수준에서 2 손절매 주문, 이익 15

그런 다음 이벤트에 대한 두 가지 옵션이 있습니다. 가격이 예금을 포착하고 반환하고 10 무릎의 그리드를 닫고 우리는 두 예금에서 적자입니다. 또는 시장이 완고하게 더 내려가서 2개의 보류 중인 이익이 마감되고 또 다른 보류 중인 포인트를 10포인트에 놓고 10개의 무릎 네트워크에서 하나 또는 쌍의 음수 주문을 마감합니다. 두 번째 보류는 손절매를 손익분기점으로 당기고 끝날 때까지 기다립니다.

글쎄, 어떻게든. 말로 설명하기는 다소 어렵습니다(.아이디어에 관심이 있으신 분들은 스카이프 차트에서 자세히 설명드리겠습니다.

 
Evgeniu Semenuta :

확인. 나는 기술하려고 노력할 것이다. 가격이 하락했다고 가정해 봅시다. Ilan은 그 이전에 구매했습니다. 당연히 그는 매수에 포지션을 추가하여 로트 크기를 늘리는 식으로 가격이 롤백되거나 저장소가 고갈될 때까지 계속됩니다. 이 옵션을 시도하고 싶습니다. 예를 들어 10개의 무릎에 도달하면 올빼미는 15포인트(이전에 설정된 주문의 총 로트 크기를 2로 나눈 값) 후에 즉시 2개의 보류 주문 을 배치합니다.

1 주문은 이전 10 무릎의 이익 수준에서 손절매 만 설정됩니다.

이전 10 무릎의 이익 수준에서 2 손절매 주문, 이익 15

그런 다음 이벤트에 대한 두 가지 옵션이 있습니다. 가격이 예금을 포착하고 반환하고 10 무릎의 그리드를 닫고 우리는 두 예금에서 적자입니다. 또는 시장이 완고하게 더 내려가서 2개의 보류 중인 이익이 마감되고 또 다른 보류 중인 포인트를 10포인트에 놓고 10개의 무릎 네트워크에서 하나 또는 쌍의 음수 주문을 마감합니다. 두 번째 보류는 손절매를 손익분기점으로 당기고 끝날 때까지 기다립니다.

글쎄, 어떻게든. 말로 설명하기는 다소 어렵습니다(.아이디어에 관심이 있으신 분들은 스카이프 차트에서 자세히 설명드리겠습니다.

피할 수 없는 배수로 이어지는 평소의 발상! 세부 사항은 더 이상 흥미롭지 않습니다!
 

안녕하세요. 이 스레드에서 고려 중인 원래 Expert Advisor를 수정하는 옵션이 있습니까? 그렇다면 다음은 설명입니다.

마무리해야 하는 어드바이저가 있습니다(거래가 허용되고 두 가지 매개변수가 충족되지 않는 경우 자체적으로 거래를 마감하지 않습니다: 마감 영역 지정 및 부분 마감 볼륨의 크기 지정) ) 기술적 작업에 대한 설명 :

기간: 아무거나


사용된 도구:

볼린저 밴드: 기간 20

편차 2

닫기에 적용



ADX: 기간 14

닫기에 적용

레벨 25



매수 신호: 플랫 동안(ADX 레벨이 레벨 25 미만일 때) 우리는 가격이 더 낮은 볼린저 밴드에서 마감될 때까지 기다립니다. o 매개변수(o 매개변수는 주문의 시작점, 중간에서 거리 낮은 볼린저 밴드 는 100%로 정의되며, 0%는 낮은 볼린저 밴드의 포인트, 10% 높은 등) 그런 다음 가격 상승 방향으로 확인 양초의 마감을 기다립니다. 구매 열기. 손절매는 설정에서 포인트로 설정되며, 주문을 청산하는 것은 Expert Advisor의 옵션에 따라 다르며 옵션의 매개 변수는 나중에 설명합니다. .주문은 볼린저의 중간 밴드에 닿을 때 매개변수 n으로 마감됩니다(매개변수 n은 백분율로 설정되고 거래량의 어느 부분이 마감되는지를 결정합니다. 로트에서 이 값은 반내림됩니다. 0%는 아무것도 마감되지 않았음을 의미합니다. ) . 손절매가 주문 개시 가격에 배치되고 f 매개변수로 주문이 완전히 마감됩니다(중간 볼린저 밴드에서 상위 밴드까지의 거리는 100%로 간주되며 백분율로 정의된 f 매개변수는 다음 지점을 설정합니다. 가격이 도달하면 주문이 닫히고 0%는 상위 볼린저 밴드의 10% 낮은 지점 등)/

매도 신호: 플랫 동안(ADX 레벨이 레벨 25 미만일 때) 볼린저 밴드 상단에서 가격이 마감될 때까지 기다립니다. o 매개변수와 함께(o 매개변수는 주문 시작점을 정의하고 중간 볼린저 밴드에서 상위 밴드까지의 거리는 100%로 정의됩니다. 0%는 상위 볼린저 밴드의 한 점, 10% 하위 등), 그런 다음 확인 촛불이 측면 가격 인하에 가까워 질 때까지 기다립니다. 판매를 오픈합니다. 손절매는 설정에서 포인트로 설정되며, 주문을 청산하는 것은 Expert Advisor의 옵션에 따라 다르며 옵션의 매개 변수는 나중에 설명합니다. . 중간 볼린저 밴드에 닿으면 n 매개변수로 주문이 마감됩니다. (매개변수 n은 백분율로 설정되며 볼륨의 어느 부분이 마감되었는지 결정합니다. 로트에서 이 값은 반내림됩니다. 0%는 아무것도 닫혀 있지 않음을 의미합니다.) (중간 볼린저 밴드에서 하단 밴드까지의 거리는 100%로 간주되며 백분율로 정의된 매개변수 f는 가격이 도달하면 주문이 종료되는 지점을 설정하고 0%는 하단 볼린저 축의 지점, 10% 더 높음 등)/



옵션:

어드바이저의 옵션에서 손절매가 설정되거나 전혀 설정되지 않습니다. 손절매는 두 가지 유형으로 나뉩니다. 포인트로 표시되는 보통(보통)과 잠재적 기대 이익, 즉 주문이 열릴 때 주문 가격에서 반대 볼린저 밴드(즉, 상한 또는 하한)에 따라 달라지는 손절매 , 거리는 포인트로 계산됩니다. 옵션에서 계수 S가 설정됩니다(0에서 1까지). 여기에 잠재적인 이익을 곱한 것입니다. 이 값은 손절매입니다. 즉, 계수가 0.5이면 손절매는 잠재적 이익의 절반에 해당하는 값이 됩니다. )

이 Expert Advisor를 작성한 프로그래머는 주로 Bollinger Bands를 기반으로 Expert Advisor를 작성하는 데 관심이 있었으며 더 이상 개발할 계획이 없습니다. 첨부 파일에는 어드바이저가 기반으로 하는 히스토리에 대한 전략 통계와 VPS에 대한 어드바이저의 1주 반 실행 진술(다른 자금 관리를 가진 3개의 터미널이 출시됨). 아래는 코드입니다:

 #property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
//--- input parameters
input int       BBPeriod= 20 ;
input double    BBdeviation= 2.0 ;
input int       ADX= 14 ;
input double    AdxLevel= 25 ;
input double       SL= 2000 ;
input double       TP= 0 ;
input int       Obuy= 5 ;
input int       Osell= 5 ;
input double    Lot= 0.1 ;
input bool      CloseMiddle= true ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
bool buyOpen= false ;
bool sellOpen= false ;
double _Obuy;
double _OSell;
int TryShots= 3 ;
int Slippage= 50 ;                         // Slippage
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {
   _Obuy=Obuy/ 100 ;
   _OSell=Osell/ 100 ;

   if (!IsTradeAllowed())
     {
       string message= "You must allow trading!" ;
       Print (message);
       Comment (message);
       return INIT_FAILED ;
     }

   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   static datetime prevTime;
   datetime currentTime=iTime( Symbol (), 0 , 0 );
   if (prevTime==currentTime)
     {
       return ;
     }
   else
     {
      prevTime=currentTime;
     }

   double adx= iADX ( NULL , 0 ,ADX, PRICE_CLOSE , 0 , 2 );

   if (adx<AdxLevel)
     {
       double bbMain1= iBands ( NULL , 0 ,BBPeriod,BBdeviation, 0 , PRICE_CLOSE , 0 , 2 );
       double close=iClose( NULL , 0 , 2 );
       if (!buyOpen)
        {
         double bbDown1= iBands ( NULL , 0 ,BBPeriod,BBdeviation, 0 , PRICE_CLOSE , 2 , 2 );
         BuyPosition(bbDown1,bbMain1,close);
        }
       else
        {
         double currentClose=iClose( NULL , 0 , 0 );
         double currentBB= iBands ( NULL , 0 ,BBPeriod,BBdeviation, 0 , PRICE_CLOSE , 0 , 0 );
         if (CloseMiddle && currentClose>currentBB)
           {
            CloseOpenPos(OP_BUY);
            buyOpen= false ;
           }
        }

       if (!sellOpen)
        {
         double bbUp1= iBands ( NULL , 0 ,BBPeriod,BBdeviation, 0 , PRICE_CLOSE , 1 , 2 );
         SellPosition(bbUp1,bbMain1,close);
        }
       else
        {
         double currentClose=iClose( NULL , 0 , 0 );
         double currentBB= iBands ( NULL , 0 ,BBPeriod,BBdeviation, 0 , PRICE_CLOSE , 0 , 0 );
         if (CloseMiddle && currentClose<currentBB)
           {
            CloseOpenPos(OP_SELL);
            sellOpen= false ;
           }
        }
     }

  }
//+------------------------------------------------------------------+

void BuyPosition( double bbDown, double bbMain, double close)
  {
   double dif=bbMain-bbDown;
   double proc=dif *_Obuy;
   double DownProc=bbDown+proc;

   if (close<DownProc)
     {
       double openCurrent=iOpen( NULL , 0 , 1 );
       double closeCurrent=iClose( NULL , 0 , 1 );
       if (closeCurrent>openCurrent)
        {

         for ( int it= 0 ; it<TryShots; it++)
           {
             ResetLastError ();
            RefreshRates();
             double sl,tp;
             if (SL!= 0 )
               sl= NormalizeDouble (Bid-SL* Point , Digits );
             if (TP!= 0 )
               tp= NormalizeDouble (Bid+TP* Point , Digits );
             Print (Ask+ " sl" +sl+ " tp" +tp);
             if (! OrderSend ( Symbol (),OP_BUY,Lot, NormalizeDouble (Ask, Digits ),Slippage,sl,tp))
              {
               if (it>=TryShots) { Print ( "Failed OP_BUY !" ); break ; }
               int err= GetLastError ();
               if (err== 4 || err== 6 || err== 8 || err== 128 || err== 137 || err== 141 || err== 146 ) Sleep ( 1000 *it);
               else { Print ( "Failed OP_BUY !" ); break ; }
              }
             else
              {
               buyOpen= true ;
               break ;
              }

           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SellPosition( double bbUp, double bbMain, double close)
  {
   double dif=bbUp-bbMain;
   double proc=dif*_OSell;
   double UpProc=bbUp-proc;

   if (close>UpProc)
     {
       double openCurrent=iOpen( NULL , 0 , 1 );
       double closeCurrent=iClose( NULL , 0 , 1 );
       if (closeCurrent<openCurrent)
        {
         for ( int it= 0 ; it<TryShots; it++)
           {
             ResetLastError ();
            RefreshRates();
             double sl,tp;
             if (SL!= 0 )
               sl= NormalizeDouble (Ask+SL* Point , Digits );
             if (TP!= 0 )
               tp= NormalizeDouble (Ask-TP* Point , Digits );
             Print (Bid+ " sl" +sl+ " tp" +tp);
             if (! OrderSend ( Symbol (),OP_SELL,Lot, NormalizeDouble (Bid, Digits ),Slippage,sl,tp))
              {
               if (it>=TryShots) { Print ( "Failed OP_SELL !" ); break ; }
               int err= GetLastError ();
               if (err== 4 || err== 6 || err== 8 || err== 128 || err== 137 || err== 141 || err== 146 ) Sleep ( 1000 *it);
               else { Print ( "Failed OP_SELL !" ); break ; }
              }
             else
              {
               sellOpen= true ;
               break ;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Close open position                                              |
//+------------------------------------------------------------------+
void CloseOpenPos( int or_tp)
  {
   int i,err,k= OrdersTotal ();
//---
   for (i=k- 1 ; i>= 0 ; i--)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
        {
         if (OrderSymbol()== Symbol ())
           {
             if (or_tp==OrderType())
              {
               for ( int it= 0 ; it<TryShots; it++)
                 {
                   ResetLastError ();
                  RefreshRates();
                   double _price=Ask; if (or_tp==OP_BUY) _price=Bid;
                   //---
                   if (!OrderClose(OrderTicket(),OrderLots(),_price,Slippage))
                    {
                     if (it>=TryShots) { Print ( "Failed to close the order " ,OrderTicket(), "!" ); break ; }
                     err= GetLastError ();
                     if (err== 4 || err== 6 || err== 8 || err== 128 || err== 137 || err== 141 || err== 146 ) Sleep ( 1000 * 100 );
                     else { Print ( "Failed to close the order " ,OrderTicket(), "!" ); break ; }
                    }
                   else break ;

                 }
              }
           }
        }
     }
  }

//+------------------------------------------------------------------+

VPS에서 실행되는 터미널에서 더 많은 스크린샷을 추가합니다. 스크린샷 "1" 및 2"는 고문이 자체적으로 거래를 시작하지 않는 경우의 예입니다.  

어드바이저의 '잠금' 화면이 뜨는 판매 조건으로 인해 저절로 구매가 종료되지 않고 판매가 열렸습니다.
화면 "주문 완료", 이 경우 주문이 올바르게 열렸습니다.
파일:
Pictures.zip  775 kb
a2ji9v3g8.zip  14 kb
Statement.zip  23 kb
 

총 이익에 따라 모든 주문을 마감하는 스크립트가 있는 사람은 폐기하십시오.

고맙습니다.

 

안녕하세요 FX 아이 인디케이터에 어드바이저를 쓴다는 발상을 어떻게 보시나요?? 저처럼 아주 정확해서 신호를 주고, TrendWave도 붙이면 필터가 나옵니다 아주 좋은.

원칙적으로 그가 "눈"과 화면에 파란색과 빨간색 마커를 표시하는 변수를 기반으로 이해하면 쓰기를 시도 할 수 있습니다!

 
baikot :

안녕하세요 FX 아이 인디케이터에 어드바이저를 쓴다는 발상을 어떻게 보시나요?? 저처럼 아주 정확해서 신호를 주고, TrendWave도 붙이면 필터가 나옵니다 아주 좋은.

원칙적으로 그가 "눈"과 화면에 파란색과 빨간색 마커를 표시하는 변수를 기반으로 이해하면 쓰기를 시도 할 수 있습니다!

지표는 어디에 있습니까?
 
Victor Nikolaev :
지표는 어디에 있습니까?
가치가 없지만. 디컴파일러를 찾아 욕조에 들어가십시오.