[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 142

 
E_mc2 >> :

늦잠을 자는 것이 두렵다면 이 줄을 바꾸세요.

\ if ( WarningMode>0 ) PlaySound(사운드 파일); \

이것에 대한 지표

\ if ( WarningMode>0 && shift==0) GlobalVariableSet("알람",1); \

다음과 같은 지표를 생성합니다.

 int start ( )
{ if ( GlobalVariableGet ( "Будильник" ) ) PlaySound ( "news.wav" ) ;
return ( 0 ) ;
}

그리고 잠이 들 때 메인 인디케이터 외에 알람 시계도 있습니다.

F3 키를 통해 "알람 시계" 변수를 수동으로 변경하여 알람 시계를 끄려면 값 0을 할당해야 합니다.

 
Urain >> :

그리고 왜 필요합니까? 더 말해봐, 어쩌면 해결책이 근처에 있을지도 모르지만 사람들이 이해할 수 있도록 올바르게 묻는 방법을 모른다.

당신이 쓴 것에 따르면, 나는 당신이 원하는 두 가지 솔루션을 가지고 있습니다. 한 번에 두 가지는 쓰기에는 너무 깁니다. :)

..

그건 그렇고 긴 코드는 파일로 첨부하는 것이 좋습니다.

예, 코드에는 특수 버튼 SRC가 있습니다.

예, 신호를 놓치지 않기 위해 필요합니다)) 경보만 배포되면 특히 밤에 놓치기 쉽습니다 (((그리고 그것은 무엇을 의미합니까 - 알람 시계 ?? 무슨 일이 일어날까요 ??

줄을 바꿨어요..새 칠면조 알람시계를 만들었어요.... 근데 이해가 안가네요...칠면조가 신호를 주든 안주든 상관없이 항상 계속 작동합니다... 칠면조에서 신호가 없으면 알람 시계에서 계속 삐 소리가납니다 ))) 신호가 있으면 신호가 없지만 알람 시계는 작동합니다 ..

 
E_mc2 >> :

예, 신호를 놓치지 않기 위해 필요합니다)) 경보만 배포되면 특히 밤에 놓치기 쉽습니다 (((그리고 그것은 무엇을 의미합니까 - 알람 시계 ?? 무슨 일이 일어날까요 ??

위에서 설명한 대로 표시기의 줄을 변경합니다.

첨부된 표시기를 컴파일하고 실행합니다.

표시기를 끄거나 전역을 재설정할 때까지 매 틱마다 벨이 울립니다. 변수 "알람 시계"

파일:
wxinptvxq.mq4  1 kb
 

이동 평균 전문가 고문.

주문을 여는 데 KimIV 함수를 삽입했습니다(GetSizeLot() OpenPosition CorrectTF(int TimeFrame=0) GetNameOP(int op) ModifyOrder() ExistPositions() Message()). 아직 닫히지 않았습니다. 표시기 void Indicat_Var() 에서 내 자신의 데이터 함수를 만들어 표시기 데이터가 한 곳에 있고 프로그램의 어느 곳에서나 사용할 수 있습니다 .

CheckForOpen() 함수에서 Indicat_Var()로 호출하면 모든 것이 정상이지만 CheckForClose()에서 Indicat_Var()로 적용할 때 주문이 마감되지 않는 이유를 모르겠습니다.

그리고 내 생각에는 CalculateCurrentOrders(문자열 기호) 및 ExistPositions() 함수가 서로 중복됩니다.내가 옳다면 이것을 피하는 방법

내가 그것을 알아낼 수 있도록 도와주세요

파일:
magkimiv.mq4  15 kb
 

로트 계산 기능은 이미 어드바이저에서 초기에 제공되었습니다. 다른 것을 추가했다면(GetSizeLot()), (적어도) 원래 것을 제거하십시오. - LotOptimized()

//------------------------------------------------

정말로. 열린 위치의 존재를 확인하는 기능은 서로 중복됩니다.

그 중 하나는 제거할 수 있습니다. (그들이 어떻게 다른지 그리고 어떤 것이 필요한지 알아보십시오!)

//------------------------------------------------ ------

기사를보십시오 https://www.mql5.com/en/articles/1385

거기에 러시아어로 된이 고문의 수정이 제공됩니다. 코드의 주석.

수정, - 정확히는 닫을 때.

 

차트에 주문 개시 및 종료 시점을 표시합니까?

전문가에게 질문 - 아마도 그러한 지표 또는 스크립트가있을 수 있습니다.

차트에 시작점과 닫힘점을 그립니다.

명령? 선으로 연결합니다. 녹색 - 이익,

빨간색 - 손실. 이력의 오류 분석에 유용합니다!

 

당신은 이미 이 질문에 대답했다는 것을 기억하십시오.

계정 내역에서 직접 거래를 acc에 마우스로 끌어다 놓을 수 있습니다. 일정.

그리고 원하는 것을 얻으십시오.

나도 어디선가 대본을 봤다. 나.김이 그런 대본을 가지고 있었던 것 같다.

http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=32

 

가격이 있는 Cursor 주소에서 전문가의 도움을 구합니다 ,

고맙습니다!

 

추세가 변할 때(개시 조건) 미결 주문이 마감되지 않는 이유를 이해하는 데 누가 도움이 됩니까? 그리고 이 오류를 어떻게 고칠 수 있습니까!

내가 가지고있는 코드는 다음과 같습니다.

 extern int TP = 40 ;              //уровень Take Profit
extern int SL = 0 ;                //уровень Stop Loss
extern double Lots1 = 0.2 ;        //лот основной сделки
extern double Lots2 = 0.1 ;        //лот вспомогательных сделок 
extern int slippage = 2 ;          //проскальзование
int MagicNumber1 = 5345 ; //магическое число сделки BUY
int MagicNumber2 = 1612 ; //магическое число сделки SELL
// переменная для пятизнаков
int BrokerDecimal = 1 ;
// и просто нужные переменные (типа флажки)
double ticketbuy ;
double ticketsell ;



int init ( )
   {
   // Если брокер дает котировки по валюте с точностью в пять или три знака - пипс будет меньше стандартного в 10 раз - вводим множитель   
   if ( Digits = = 3 | | Digits = = 5 ) BrokerDecimal = 10 ; 
   // Перемножить все уровни в пипсах на множитель
  SL           = SL * BrokerDecimal ; 
  TP           = TP * BrokerDecimal ;
   return ( 0 ) ;
   }

int start ( )
   {
   // Рассчеты и анализ индикаторов
   double jaw = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORJAW , 1 ) ; //синяя линия (челюсть)
   double teen = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORTEETH , 1 ) ; //красная линия (зубы)
   double lips = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORLIPS , 1 ) ; //зеленая линия (губы)
  
   double lastClose = iClose ( NULL , 0 , 1 ) ;
  
  
   // Собственно тело программы  
   if ( ( OrderSelect ( ticketbuy , SELECT_BY_TICKET , MODE_TRADES ) = = false | | OrderCloseTime ( ) > 0 )
     & & lips > jaw & & lastClose > lips ) // условие выставления ордеров БАЙ
    SEND_BUY ( ) ; // вынесем "модуль" выставления ордера бай - добавить внизу
  
   if ( ( OrderSelect ( ticketsell , SELECT_BY_TICKET , MODE_TRADES ) = = false | | OrderCloseTime ( ) > 0 )
     & & jaw > lips & & lastClose < jaw ) // условие выставления ордеров СЕЛЛ
    SEND_SELL ( ) ; // вынесем "модуль" выставления ордера сэлл - добавить внизу
  
   if ( OrdersTotal ( ) > = 1 )
       {
         if ( OrderSelect ( 0 , SELECT_BY_POS , MODE_TRADES ) )
           {
             if ( OrderType ( ) = = OP_BUY )
               {
                 if ( ( lips = = jaw | | lips = = teen ) & & lastClose = = lips ) // условия закрытия сделки БАЙ
                   while ( OrdersTotal ( ) > 0 )
                     {
                      CloseDirect ( 0 , "Принудительное закрытие сделки при обратном движении рынка, ticket=" ) ;
                     }
               }
             if ( OrderType ( ) = = OP_SELL )
               {
                 if ( ( jaw = = lips | | jaw = = teen ) & & lastClose = = jaw ) // условия закрытия сделки СЕЛЛ
                   while ( OrdersTotal ( ) > 0 )
                     {
                      CloseDirect ( 0 , "Принудительное закрытие сделки при обратном движении рынка, ticket=" ) ;
                     }
               }
           }
         else
           {
             Print ( "ОШИБКА в Start()(блок закрытия при обратном движении) :OrderSelect() - " , GetLastError ( ) ) ;
             return ( - 1 ) ;
           }
       }
         
   return ( 0 ) ;
   }

// "модуль" выставления ордера бай
void SEND_BUY ( )
   {
   double sl_buy ;
   if ( ! SL )
   { 
  sl_buy = 0 ;
   }
     else
     {
    sl_buy = Ask - SL * Point ;
     }
    ticketbuy = OrderSend ( Symbol ( ) , OP_BUY , Lots1 , Ask , slippage , sl_buy , Ask + TP * Point , "take_trend" , MagicNumber1 , 0 , Blue ) ;
           if ( ticketbuy = = - 1 )
           {
           Alert ( Symbol ( ) , "ошибка:бай" , GetLastError ( ) ) ;
           return ( - 1 ) ;
           }
             if ( ticketbuy > 1 )
             Alert ( Symbol ( ) , "бай - ок !" ) ;
   }

// "модуль" выставления ордера сэлл
void SEND_SELL ( )
   {
   double sl_sell ;
   if ( ! SL )
   { 
  sl_sell = 0 ;
   }
   else
   {
   sl_sell = Bid + SL * Point ;
   }
   ticketsell = OrderSend ( Symbol ( ) , OP_SELL , Lots1 , Bid , slippage , sl_sell , Bid - TP * Point , "take_trend" , MagicNumber2 , 0 , Red ) ;
         if ( ticketsell = = - 1 )
         {
         Alert ( Symbol ( ) , "ошибка:сэлл" , GetLastError ( ) ) ;
         return ( - 1 ) ;
         }
           if ( ticketsell > 1 )
           Alert ( Symbol ( ) , "сэлл - ок !" ) ;
   }

// МОДУЛЬ ЗАКРЫТИЯ СДЕЛОК ПРИ СМЕНЕ ТРЕНДА 
void CloseDirect ( int cntr , string comm )
   {
     double closeprice ;
     if ( OrderSelect ( cntr , SELECT_BY_POS , MODE_TRADES ) )
       {
         RefreshRates ( ) ;
         if ( OrderType ( ) = = OP_BUY )
          closeprice = Bid ;
         else
          closeprice = Ask ;
         if ( OrderClose ( OrderTicket ( ) , OrderLots ( ) , closeprice , 10 , Green ) )
         {
           Print ( comm , OrderTicket ( ) ) ;
         }
         else
           {
             Print ( "ОШИБКА в CloseDirect():OrderClose() - " , GetLastError ( ) ) ;
           }
       }
     else
       {
         Print ( "ОШИБКА в CloseDirect():OrderSelect() - " , GetLastError ( ) ) ;
       }
   }
 

매끄러운 rsi에서 신호를 얻는 방법을 알려주십시오. (MA => RSI).