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

 
DhP :
이 경우 MagicNumber는 EA 코드에서 제공하지 않는 한 변경되지 않습니다.

모두 감사합니다!
 
Roman. :


결정:

나는 구매를 위해 줄 것입니다 (판매 - 유추) :

1. MA 나누기 - 3번째, 2번째 및 1번째 막대에서 MA 값 가져오기 - 비교. 막대 3>2 및 2<1의 MA 값이면 이것이 전환점입니다.

2. 추가 - 프랙탈 - 침투 - 거래 신호

3. MA 열거 - 외부(최적화된) 변수로 가져오기:

Period_MA(2에서 240까지 2단계로 설정 가능), MODE -(MA 계산 방식 - 0에서 3까지 변경 범위 1단계), PRICE_TYPE -(가격 상수 - 0에서 6까지 변경 범위 1단계), 인트라 일할 때 MA를 평균값으로 계산하는 것이 더 합리적이라고 들었습니다 (종가는 중요하지 않음).

기간 - 각 후속 최적화에서 수동으로 변경 - 1,5,15,30,60,240...

iMA에서 F1 키를 누릅니다. 모든 내용을 주의 깊게 다시 읽으십시오.

물론 평소처럼 TR을 최적화하고 손실을 막습니다.

추신 테스트 결과에 대한 정보를 작성하는 것을 잊지 마세요... :-)))

TF=1분에 대한 테스트 결과. 하루에 한 번 어드바이저를 최적화하더라도 수익성있는 옵션을 제공하지 않았습니다.
 
DhP :
위치를 부분적으로 닫을 때 마법을 변경할 수 있습니다. 어렵지 않게 쓸 수 있을 것 같아요.

mql 커뮤니티에서 사용할 수 없는 지식을 가지고 있거나 단순히 질문을 이해하지 못했거나 OrderClose 함수가 마법을 변경한다고 순진하게 착각하고 있을 것입니다.

 
gince :

초기 플래그[i+ 1 ] 설정이 없다는 것을 깨달았습니다. 그렇다면 어디서, 어떻게 해야 할까요?

1로 설정하면 표시기가 시작될 때 표시기(표시기)가 변경을 기다립니다.

다음과 같이 올바르게 수행하십시오.

 if ((flag[i]== 1 || flag[i]== 0 ) && условие продажи)
초기화되지 않은 플래그가 0인 조건(또는 EMPTY_VALUE ....을 사용)
 
sergeev :

다음과 같이 올바르게 수행하십시오.

초기화되지 않은 플래그가 0인 조건으로(또는 EMPTY_VALUE....를 취함)

모두에게 감사합니다. 내가 원하는 것을 했다.

 
volshebnik :
TF=1분에 대한 테스트 결과. 하루에 한 번 어드바이저를 최적화하더라도 수익성있는 옵션을 제공하지 않았습니다.

TF가 낮을수록 노이즈가 커집니다...
 
Roman. :

TF가 낮을수록 노이즈가 커집니다...
예, 하지만 전략이 정확하다면 다른 매개변수로만 모든 TF에서 작동해야 하는 것 같습니다. TF=5분에 대한 테스트 결과. 또한 수익성있는 옵션을 제공하지 않았습니다.
 
volshebnik :
예, 하지만 전략이 정확하다면 다른 매개변수로만 모든 TF에서 작동해야 하는 것 같습니다. TF=5분에 대한 테스트 결과. 또한 수익성있는 옵션을 제공하지 않았습니다.

진정한 길 잃은 사람이 있습니다. 나는 지금 흥분했다. 쉬고 있다.
 
sergeev :

여전히 코드에 오류가 있습니다.

기억하십시오: 대기 중인 중지 및 접수는 현재 가격이 아니라 주문 개시 가격에서 계산됩니다.



특별한 감사와 존경을 표합니다 :))))

오류 수정(이제 모든 것을 희망합니다 :)) + 제한이 추가되었습니다. 주문에 매직 번호를 할당해야 하는 사람들에게 매우 유용할 것입니다.

건강에 사용!

 #property copyright "Copyright © 2010 - 2011, Хлыстов Владимир, в редакции AMRo"
#property link       "cmillion@narod.ru, nemo811@mail.ru"
#property show_inputs
/*
Иногда требуется помочь советнику добавить ордер, но чтобы советник его принял за свой
необходим Magic номер. Для выставления ордера с таким номером и предназначен этот скрипт.
Возможна одновременная установка до 6 типов ордеров. При сбоях связи или резком движении цены
будет выполнено 10 попыток выставления ордера, после чего скрипт закончит работу.
*/
//--------------------------------------------------------------------
extern int      Magic       = 0 ;         //уникальный номер ордера
extern bool     BUY         = false;     //открыть ордер BUY
extern bool     BUY_STOP    = false;     //поставить ордер BUY STOP
extern bool     BUY_LIMIT   = false;     //поставить ордер BUY LIMIT
extern bool     SELL        = false;     //открыть ордер SELL
extern bool     SELL_STOP   = false;     //поставить ордер SELL STOP
extern bool     SELL_LIMIT  = false;     //поставить ордер SELL LIMIT
extern double   Lot         = 0.1 ;       //объем ордера
extern int      takeprofit  = 0 ;         //уровень выставления TP, если 0, то TP не выставляется
extern int      stoploss    = 0 ;         //уровень выставления SL, если 0, то SL не выставляется
extern int      DistanceSet = 40 ;       //расстояние от рынка для отложенника
extern int      slippage    = 3 ;         //максимально допустимое отклонение цены для рыночных ордеров
//--------------------------------------------------------------------
double SL,TP;
//--------------------------------------------------------------------
int start()
{
   if (BUY)
   {
       if (takeprofit!= 0 ) TP  = NormalizeDouble (Ask + takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL  = NormalizeDouble (Ask - stoploss* Point , Digits ); else SL= 0 ;     
      OPENORDER ( "Buy" );
   }
   if (SELL)
   {  
       if (takeprofit!= 0 ) TP = NormalizeDouble (Bid - takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL = NormalizeDouble (Bid + stoploss* Point , Digits );   else SL= 0 ;              
      OPENORDER ( "Sell" );
   }
   if (BUY_STOP)
   {
       if (takeprofit!= 0 ) TP  = NormalizeDouble (Ask + DistanceSet* Point + takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL  = NormalizeDouble (Ask + DistanceSet* Point - stoploss* Point , Digits ); else SL= 0 ;     
      OPENORDER ( "Buy Stop" );
   }
   if (SELL_STOP)
   {  
       if (takeprofit!= 0 ) TP = NormalizeDouble (Bid - DistanceSet* Point - takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL = NormalizeDouble (Bid - DistanceSet* Point + stoploss* Point , Digits );   else SL= 0 ;              
      OPENORDER ( "Sell Stop" );
   }
   if (BUY_LIMIT)
   {
       if (takeprofit!= 0 ) TP  = NormalizeDouble (Ask - DistanceSet* Point + takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL  = NormalizeDouble (Ask - DistanceSet* Point - stoploss* Point , Digits ); else SL= 0 ;     
      OPENORDER ( "Buy Limit" );
   }
   if (SELL_LIMIT)
   {  
       if (takeprofit!= 0 ) TP = NormalizeDouble (Bid + DistanceSet* Point - takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL = NormalizeDouble (Bid + DistanceSet* Point + stoploss* Point , Digits );   else SL= 0 ;              
      OPENORDER ( "Sell Limit" );
   }
return ( 0 );
}
//--------------------------------------------------------------------
void OPENORDER( string ord)
{
   int error,err;
   while (true)
   {  error=true;
       if (ord== "Buy" ) error= OrderSend ( Symbol (),OP_BUY, Lot, NormalizeDouble (Ask, Digits ),slippage,SL,TP, "" ,Magic, 0 );
       if (ord== "Sell" ) error= OrderSend ( Symbol (),OP_SELL,Lot, NormalizeDouble (Bid, Digits ),slippage,SL,TP, "" ,Magic, 0 );
       if (ord== "Buy Stop" ) error= OrderSend ( Symbol (),OP_BUYSTOP, Lot, NormalizeDouble (Ask + DistanceSet* Point , Digits ),slippage,SL,TP, "" ,Magic, 0 );
       if (ord== "Sell Stop" ) error= OrderSend ( Symbol (),OP_SELLSTOP,Lot, NormalizeDouble (Bid - DistanceSet* Point , Digits ),slippage,SL,TP, "" ,Magic, 0 );
       if (ord== "Buy Limit" ) error= OrderSend ( Symbol (),OP_BUYLIMIT, Lot, NormalizeDouble (Ask - DistanceSet* Point , Digits ),slippage,SL,TP, "" ,Magic, 0 );
       if (ord== "Sell Limit" ) error= OrderSend ( Symbol (),OP_SELLLIMIT,Lot, NormalizeDouble (Bid + DistanceSet* Point , Digits ),slippage,SL,TP, "" ,Magic, 0 );
       if (error==- 1 ) //неудачная попытка
      {  
         ShowERROR();
         err++; Sleep ( 2000 );RefreshRates();
      }
       if (error || err > 10 ) return ;
   }
return ;
}                  
//--------------------------------------------------------------------
void ShowERROR()
{
   int err= GetLastError ();
   switch ( err )
   {                  
       case 1 :   return ;
       case 2 :   Alert ( "Нет связи с торговым сервером " , Symbol ()); return ;
       case 3 :   Alert ( "Error неправильные параметры " , Symbol ()); return ;
       case 130 : Alert ( "Error близкие стопы   Ticket " , Symbol ()); return ;
       case 134 : Alert ( "Недостаточно денег   " , Symbol ()); return ;
       case 146 : Alert ( "Error Подсистема торговли занята " , Symbol ()); return ;
       case 129 : Alert ( "Error Неправильная цена " , Symbol ()); return ;
       case 131 : Alert ( "Error Неправильный объем " , Symbol ()); return ;
       case 4200 : Alert ( "Error Объект уже существует " , Symbol ()); return ;
       default :   Alert ( "Error  " ,err, " " , Symbol ()); return ;
   }
}
//--------------------------------------------------------------------
 
Roman. :

진정한 길 잃은 사람이 있습니다. 나는 지금 흥분했다. 쉬고 있다.
TF 기준 = 15분 똑같다. 지금까지 나는 이 전략에서 "충실도"를 보지 못했습니다. 아마도 여전히 앞서 나타날 것입니다. (멋진 휴가를))