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

 
Igor Makanu :

나는 질문의 수준에 대해 위에 썼습니다.)

그리고 이미 OnTick / OnInit에서 최적의 초기화를 찾기 시작했습니다. 모든 것이 더 간단합니다. 발견된 코드 를 같은 친구와 공유할 수 있도록 보호해야 합니다. )))

분명히, 다음 건배: 찾은 "친구"를 위해!

 
Igor Makanu :

같은 친구와 공유하려면 발견된 코드에 대한 보호가 필요합니다)))

좋은 라인. 우리는 지루해 보일지 모르지만 우리는 재미있습니다!

 
Vitaly Muzichenko :

그게 한계입니다 :(


비탈리, 음, 얼마나 부정적인지. 그 남자는 단지 그에게 트롤을 요청합니다, 당신은 존중해야 합니다)

이고르 마카누 :

나는 질문의 수준에 대해 위에 썼습니다.)

그리고 이미 OnTick / OnInit에서 최적의 초기화를 찾기 시작했습니다. 모든 것이 더 간단합니다. 발견된 코드를 동일한 친구와 공유할 수 있도록 보호해야 합니다. )))

))))

 
Aleksey Mavrin :

비탈리, 음, 얼마나 부정적인지. 그 남자는 단지 그에게 트롤을 요청합니다, 당신은 존중해야 합니다)

))))

좋아, 약간의 긍정

 
좋은 시간, 제발 말해주세요. 매뉴얼에는 이벤트가 초기화는 OnInit() 함수에 의해 처리됩니다. 이 이벤트는 금융 상품 및/ 또는 차트 기간이 변경된 후에도 생성됩니다.

여기 내 간단한 코드가 있습니다. 기간을 변경하면 기능이 작동하지만 기호를 변경할 때는 작동하지 않습니다. 아니면 제가 "금융상품의 변경"이라는 용어를 잘못 이해하고 있는 건가요?

 int OnInit ()
  {
     Print ( "HALLO" );
     return ( INIT_SUCCEEDED );
  }
Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 
WinProject :
좋은 시간, 말해주세요. 매뉴얼에는 이벤트가 초기화는 OnInit() 함수에 의해 처리됩니다. 이 이벤트는 금융 상품 및/ 또는 차트 기간이 변경된 후에도 생성됩니다.

여기 내 간단한 코드가 있습니다. 기간을 변경하면 기능이 작동하지만 기호를 변경할 때는 작동하지 않습니다. 아니면 제가 "금융상품의 변경"이라는 용어를 잘못 이해하고 있는 건가요?

 int OnInit ()
  {
     Print ("HALLO Period ()= ", Period ()," Symbol ()=", Symbol ());
     return ( INIT_SUCCEEDED );
  }

인식의 충실도를 위해서는 더 좋습니다. 차트에 새 기호를 던지면 OnDeinit가 작동하고 OnInit로 시작해야 합니다.

 
Valeriy Yastremskiy :

인식의 충실도를 위해서는 더 좋습니다. 차트에 새 기호를 던지면 OnDeinit가 작동하고 OnInit로 시작해야 합니다.

덕분에 단말기랑 너무 오랜 시간을 함께 해서 마켓리뷰에서 차트에 올릴 수 있는지 몰랐는데 금융상품을 바꾸는 것이 다른 상품으로 차트창으로 넘어가는 거라고 생각했어요.

 

안녕하세요, 알려주세요, 이것은 버그입니까 아니면 제가 잘못 알고 있습니까?

기성 기능을 통해 얻을 수도 있는 몇 가지 계산을 수행하고 그 차이를 알아차렸습니다.

마진을 계산해 보니 테스터에서는 마진 계산과 AccountInfoDouble(ACCOUNT_MARGIN)이 다른 결과를 보여주지만 데모에서는 차이가 없습니다.

 #property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
 

input double lot= 0.1 ;
input int plecho= 100 ;
input double lot_increment= 1 ; //увеличение лота
input int level_size= 50 ;
input int Magic = 0 ;
input int deviation = 10 ; //допустимое проскальзывание

double margin, margin_free, uroven, sredstva_pri_s_o, margin_call, stop_out;
int N;



int OnInit (){

Print ( "Bid " , Bid);

int ticket= OrderSend ( NULL , OP_BUY, lot, Ask, 0 , 0 , 0 , "" , Magic, 0 );
     //ticket=OrderSend(NULL, OP_SELL, lot, Bid, 0, 0, 0);


Print ( "  ACCOUNT_MARGIN " , AccountInfoDouble ( ACCOUNT_MARGIN )
, "  ACCOUNT_MARGIN_LEVEL " , AccountInfoDouble ( ACCOUNT_MARGIN_LEVEL ));

margin=(OrderLot()* 100000 *OrderPrice())/plecho;
Print ( "OrderLot() " , OrderLot(), "  OrderPrice() " , OrderPrice());
margin_free= AccountInfoDouble ( ACCOUNT_EQUITY )-margin;
uroven=( AccountInfoDouble ( ACCOUNT_EQUITY )/margin)* 100 ;
sredstva_pri_s_o=(margin* AccountInfoDouble ( ACCOUNT_MARGIN_SO_SO ))/ 100 ;
N=( int ) NormalizeDouble (( AccountInfoDouble ( ACCOUNT_BALANCE )-sredstva_pri_s_o)
/MarketInfo( Symbol (), MODE_TICKVALUE), 0 );
stop_out=OrderPrice()-(N* Point ());

Print ( "stop_out " , stop_out, "  margin " , margin, "  uroven " , uroven
, "  ACCOUNT_MARGIN_SO_SO " , AccountInfoDouble ( ACCOUNT_MARGIN_SO_SO )
, "  ACCOUNT_MARGIN_LEVEL " , AccountInfoDouble ( ACCOUNT_MARGIN_LEVEL )
, "  ACCOUNT_MARGIN " , AccountInfoDouble ( ACCOUNT_MARGIN ));
return ( INIT_SUCCEEDED );
} //+------------------------------------------------------------------+
void OnDeinit ( const int reason){
} //+------------------------------------------------------------------+
void OnTick (){


Print ( "  ACCOUNT_MARGIN " , AccountInfoDouble ( ACCOUNT_MARGIN )
, "  ACCOUNT_MARGIN_LEVEL " , AccountInfoDouble ( ACCOUNT_MARGIN_LEVEL ));

Comment ( "AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL) " , AccountInfoDouble ( ACCOUNT_MARGIN_SO_CALL )
, "  AccountInfoDouble(ACCOUNT_MARGIN_SO_SO) " , AccountInfoDouble ( ACCOUNT_MARGIN_SO_SO )
, "  AccountInfoDouble(ACCOUNT_MARGIN_LEVEL) " , AccountInfoDouble ( ACCOUNT_MARGIN_LEVEL )
, "  AccountInfoDouble(ACCOUNT_MARGIN) " , AccountInfoDouble ( ACCOUNT_MARGIN )
, "  MarketInfo(Symbol(), MODE_MARGINREQUIRED) " , MarketInfo( Symbol (), MODE_MARGINREQUIRED) , "\n"
, "margin " , margin
, "  margin_free " , margin_free 
, "  uroven " , uroven );
} //+------------------------------------------------------------------+

double OrderPrice(){
   double count= 0 ;
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)){
         if (OrderSymbol() == Symbol ()  && OrderMagicNumber()==Magic )
            count=OrderOpenPrice();
      }   
   } 
   return (count);   
}
double OrderLot(){
   double count= 0 ;
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)){
         if (OrderSymbol() == Symbol ()  && OrderMagicNumber()==Magic )
            count=OrderLots();
      }   
   } 
   return (count);   
}


 
도와주세요.

나는 모든 것을 시도했지만 여전히 오류 130 을 제공합니다.
파일:
Wai_v_5.0.mq4  59 kb
 
좋은 오후에요 여러분. 나는 물론 나의 고문 성배 를 쓰려고 노력하고 있습니다 ;-). 그러나 어떤 이유로 작동하고 싶지 않습니다. 그리고 이해하기 힘든 글을 스크린샷으로 많이 그리지 않기 위해 영상을 녹화했습니다. 메시지에 영상 링크 남깁니다. 이것은 더 명확하고 빠르게 만들 것입니다. 질문은 영상에 있습니다. 미리 감사드립니다. https://youtu.be/tqZrXjMONrE
ВОПРОС ПО НАПИСАНИЮ СОВЕТНИКА
ВОПРОС ПО НАПИСАНИЮ СОВЕТНИКА
  • 2020.12.09
  • www.youtube.com
ПИШУ СОВЕТНИК НА MQL4, А ГДЕ-ТО ДОПУСТИЛ ОШИБКУ- ПОМОИГИТЕ ПОЖАЛУЙСТА ПОНЯТЬ ГДЕ И В ЧЁМ ЭТА ОШИБКА ПОЛУЧИЛАСЬ?