MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1232

[삭제]  
포럼에서 내 주제를 삭제하려면 어떻게 해야 합니까?
 
Сергей Таболин :
포럼에서 내 주제를 삭제하려면 어떻게 해야 합니까?

안 돼요. 주제가 무엇입니까?

[삭제]  
Artyom Trishkin :

안 돼요. 주제가 무엇입니까?

https://www.mql5.com/ru/forum/348294

MQ5::Вопрос по свечному индикатору.
MQ5::Вопрос по свечному индикатору.
  • 2020.08.04
  • www.mql5.com
Привет всем! Пока меня окончательно и пожизненно не забанили, хочу успеть задать вопрос по индикатору...
[삭제]  

감사해요 )))

 

안녕하세요! 기능을 강제 실행하려고 합니다.

 //-------------------------------------------------------------------------------
//                      Функция модификации позиции,безуыток, трейлинг-стоп 
//-------------------------------------------------------------------------------+ 
                  
bool Modi_Traili( int select, int pool=MODE_TRADES, ulong magic=- 1 ) 
{ 
//   double Profit_On =OrderProfit();                  // Профит открытой позиции             
   double Price_Open = 0 ;                         // Цена открытой позиции
   string sym = Symbol (),er;
   int i,cnt= 0 , k= OrdersTotal (),op=- 1 ,mn=- 1 ;
   double Market_Pi= 0 , oop= 0 , point= 0 , pp= 0 ;
   bool loop = false ;
//----------------------------------
     if (sym== "" ) sym= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_TICKET, MODE_TRADES)) {
       if ((OrderSymbol()==sym || sym== "" ) && (op< 0 || OrderType()==op)) {
         if (OrderType()==OP_BUY && (mn< 0 || OrderMagicNumber()==mn)){             
           int   Ticket=OrderTicket(); 
            Price_Open = OrderOpenPrice();                                           
            Market_Pi=MarketInfo(OrderSymbol(), MODE_ASK);
            point=MarketInfo(OrderSymbol(), MODE_POINT);
             if (point== 0 ) if ( StringFind (sym, "JPY" )< 0 ) point= 0.0001 ; else point= 0.01 ;
             if (point== 0 ) if ( StringFind (sym, "XAU" )< 0 ) point= 0.0001 ; else point= 0.001 ;
             double Sorri= MathRound ( MathAbs (Market_Pi-Price_Open)/point);   
               Print ( "Ticket==" ,Ticket, "Sorri = " ,Sorri, "Price_Open = " ,Price_Open, "mi = " ,Market_Pi);
             if (Sorri >Deta && OrderProfit()> 0 )
            {
//            Print("Ticket==",Ticket,"Sorri = ",Sorri,"Price_Open = ",Price_Open,"mi = ",Market_Pi);
 //--------------------------------------------------------------------------------------------------
     while (!loop)                               // Цикл модификации  
     {     
     double TP = NormalizeDouble (Ask+TProfit* Point , Digits );  
     double SL= NormalizeDouble (Ask+( 2 +MarketInfo(OrderSymbol(), MODE_SPREAD )/point), Digits ); 
           Alert ( "М-  -  -я " ,Ticket, ". Ждём ответ.." );
           bool Ans=OrderModify(Ticket,Price_Open,SL,TP, 0 );     //Модифи его!
//--------------------------------------------------------------------------------
   if (Ans== true )                       // Получилось :)
              {
               Alert ( "Ордер " ,Ticket,TP, " модифицирован:)" );
               break ;                           // Из цикла модифи.
              }
             //--------------------------------------------------- 7 --------------------
             int Error= GetLastError ();           // Не получилось :(
             switch (Error)                       // Преодолимые ошибки
              {
               case 0   : loop = true ; break ; 
      
       case 4   : er=( "Торговый сервер занят" );
       case 135 : er=( "Цена изменилась" );
       case 137 : er=( "Брокер занят" );
       case 138 : er=( "Новые цены" );
       case 146 : er=( "Подсистема торговли занята. Пробуем ещё.." );
        Message(er);
         Sleep ( 2 );                         // Простое решение
        RefreshRates();                     // Обновим данные
           continue ;
       case 136 : er=( "Нет цен" );
       Message(er);
           while (RefreshRates()== false )         // До нового тика
           Sleep ( 5 );                         // Задержка в цикле
           cnt++; 
           continue ;
       
         default :er= StringFormat ( "Ошибка: %d" ,Error);             // Другие варианты
        Message(er);
        loop = true ;                   // Выход из while
         break ;                             // Выход из switch
          }
//--------------------------------------------------------------------------------          
        } // Окончание while
       }
      }   // Окончание if
    
         if (OrderType()==OP_SELL &&(mn< 0 || OrderMagicNumber()==mn))
        {
             int Ticket=OrderTicket(); 
            Price_Open = OrderOpenPrice(); 
            Market_Pi=MarketInfo(OrderSymbol(), MODE_BID);
            point=MarketInfo(OrderSymbol(), MODE_POINT);
             if (point== 0 ) if ( StringFind (sym, "JPY" )< 0 ) point= 0.0001 ; else point= 0.01 ;
             if (point== 0 ) if ( StringFind (sym, "XAU" )< 0 ) point= 0.0001 ; else point= 0.001 ;
               double Sorri= MathRound ( MathAbs (Price_Open-Market_Pi)/point);     //+MarketInfo(OrderSymbol(), MODE_SPREAD);
             if (Sorri >Deta && OrderProfit()> 0 )
            {
             Print ( "So = " ,Sorri, "Price_Open = " ,Price_Open, "Mi = " ,Market_Pi);
             Comment (Ticket);
             while (!loop)                               // Цикл модификации  
     {     
     double TP = NormalizeDouble (Ask+TProfit* Point , Digits );  
     double SL= NormalizeDouble (Bid-( 2 +MarketInfo(OrderSymbol(), MODE_SPREAD )/point), Digits ); 
           Alert ( "Мод------я " ,Ticket, ". Ждём ответ.." );
           bool Ans=OrderModify(Ticket,Price_Open,SL,TP, 0 );     //Модифи его!
//--------------------------------------------------------------------------------
   if (Ans== true )                       // Получилось :)
              {
               Alert ( "Ордер " ,Ticket,TP, " модифицирован:)" );
               break ;                           // Из цикла модифи.
              }
             //--------------------------------------------------- 7 --------------------
             int Error= GetLastError ();           // Не получилось :(
             switch (Error)                       // Преодолимые ошибки
              {
               case 0   : loop = true ; break ; 
      
       case 4   : er=( "Торговый сервер занят" );
       case 135 : er=( "Цена изменилась" );
       case 137 : er=( "Брокер занят" );
       case 138 : er=( "Новые цены" );
       case 146 : er=( "Подсистема торговли занята. Пробуем ещё.." );
        Message(er);
         Sleep ( 2 );                         // Простое решение
        RefreshRates();                     // Обновим данные
           continue ;
       case 136 : er=( "Нет цен" );
       Message(er);
           while (RefreshRates()== false )         // До нового тика
           Sleep ( 5 );                         // Задержка в цикле
           cnt++; 
           continue ;
       
         default :er= StringFormat ( "Ошибка: %d" ,Error);             // Другие варианты
        Message(er);
        loop = true ;                   // Выход из while
         break ;                             // Выход из switc}
        }
                      
            }
          } //
       }
      }
      }
     } //--------------------------Выход из цикла for
  
   return ( true );
}

현재 가격이 시작 가격을 초과하는 경우 중지를 손익분기점으로 이동

Deta 

포인트들. 오류 4051이 발생합니다. 모든 탱크 건물이 파일에 있습니다(필요한 경우). WMA 표시기가 사용됩니다. 내 것이 아니라 부서지지 않기를 바랍니다.

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Технические индикаторы требуют для своих расчетов указания значений цен и/или значений объемов, на которых они будут считаться. Существуют 7 предопределенных идентификаторов перечисления ENUM_APPLIED_PRICE, для указания нужной ценовой базы расчетов. Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается...
파일:
v5mz03.mq4  52 kb
WMA.mq4  10 kb
 
Galim_V :

안녕하세요! 기능을 강제 실행하려고 합니다.

현재 가격이 시작 가격을 초과하는 경우 중지를 손익분기점으로 이동

포인트들. 오류 4051이 발생합니다. 모든 탱크 건물이 파일에 있습니다(필요한 경우). WMA 표시기가 사용됩니다. 내 것이 아니라 부서지지 않기를 바랍니다.

유효하지 않은 함수 매개변수입니다. Offhand, 당신은 최소 정지 주문에 대한 수표가 없습니다. 추가하십시오. 시장의 경우 이는 필수 확인 사항입니다.

......

double TP = NormalizeDouble (Ask+TProfit* Point , Digits );  
double SL= NormalizeDouble (Bid-( 2 +MarketInfo(OrderSymbol(), MODE_SPREAD )/point), Digits ); 
TP=New_Stop(TP);
SL=New_Stop(SL);
......
double New_Stop( double Parametr) // Проверка стоп-прик.
  {
   double Min_Dist=MarketInfo( Symbol (),MODE_STOPLEVEL); // Миним. дистанция
   if (Parametr<Min_Dist) // Если меньше допуст.
     {
      Parametr=Min_Dist;                         // Установим допуст.
       Alert ( "Увеличена дистанция стоп-приказа или цены открытия отложенных ордеров." );
     }
   return (Parametr);                             // Возврат значения
  }
 
Valeriy Yastremskiy :

유효하지 않은 함수 매개변수입니다. Offhand, 당신은 최소 정지 주문에 대한 수표가 없습니다. 추가하십시오. 시장의 경우 이는 필수 확인 사항입니다.

고맙습니다! 내가 볼게요.

 

표시기가 공식을 기반으로 하고 =iMA(Symbol(), Period() ,...와 같은 일반 표시기에 대한 호출이 없는 경우)에서 작동하는 표시기의 D1에서 데이터를 가져오는 방법....

계산은 어디서 받나요?

 
모두에게 좋은 하루. 그런 상황에서 데모 계정에 직면했습니다. 일부 포지션은 총 이익의 특정 수준에 도달했을 때 어드바이저에 의해 마감되었습니다. 추정되는 양수, 모든 포지션이 좋은 마이너스에 있었지만 이벤트는 서버에서 2-50에서 발생했습니다(포지션 이전처럼 보이지 않음). Expert Advisor(제가 만든)는 모든 오픈 포지션 에 대한 총 이익을 계산하고 지정된 값과 비교합니다. 이익을 주는 쪽으로. EA는 타이머에서 작동하며 100ms가 설정되었습니다. 다른 브로커가 동일한 설정을 가진 유사한 Expert Advisor를 갖고 있지만 가격 틱에 대해 작업하는 것은 적자에 조용히 "서서" 있기 때문에 브로커를 사용하는 아이디어를 배제하지 않습니다. 계정에 준비금이 있었고 고문은 이익 달성 블록에서 폐쇄를 발표했습니다.   무엇이 잘못되었을 수 있는지 아는 사람이 있습니까?
 
Evgeny Vlasov :
모두에게 좋은 하루. 그런 상황에서 데모 계정에 직면했습니다. 일부 포지션은 총 이익의 특정 수준에 도달했을 때 어드바이저에 의해 마감되었습니다. 추정되는 양수, 모든 포지션이 좋은 마이너스에 있었지만 이벤트는 서버에서 2-50에서 발생했습니다(포지션 이전처럼 보이지 않음). Expert Advisor(제가 만든)는 모든 오픈 포지션 에 대한 총 이익을 계산하고 지정된 값과 비교합니다. 이익을 제공하는 쪽으로. EA는 타이머에서 작동하며 100ms가 설정되었습니다. 다른 브로커가 동일한 설정을 가진 유사한 Expert Advisor를 갖고 있지만 가격 틱에 대해 작업하는 것은 적자에 조용히 "서서" 있기 때문에 브로커를 사용하는 아이디어를 배제하지 않습니다. 계정에 준비금이 있었고 고문은 이익 달성 블록에서 폐쇄를 발표했습니다.   무엇이 잘못되었을 수 있는지 아는 사람이 있습니까?

이것은 텔레파시에 관한 지점에서 당신을 위한 것입니다)))) 여기 어딘가에 있었습니다)

그리고 주제에 대해... HZ. 코드가없고 시장 유형이 없으며 아무것도 없습니다 ... 확실히 - 텔레파시)))