MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1316

 
Igor Makanu:

上に書いたのは、質問のレベルについてです ;)

で、初期化の最適化をOnTick/OnInitで探し始めたとします - すべてはそちらの方がシンプルです、見つけたコードを同じ友人と共有 するには保護が必要です )))

なるほど、それなら見つかった「仲間」に乾杯ですね。

 
Igor Makanu:

同じような友人と共有するために、見つかったコードの保護が必要です )))

美しい表現です。私たちはオタクに見えるかもしれませんが、楽しんでいますよ。

 
Vitaly Muzichenko:

まあ、それがすべての限界なんですけどね :(


Vitalyさん、なんでネガティブになってるんですか?男は荒らしてくれと言わんばかりに、リスペクトすることが必要)

イゴール・マカヌ

上に書いたのは、質問のレベルについてです ;)

で、初期化の最適化をOnTick/OnInitで探し始めたとします - すべてはそちらの方がシンプルです、見つけたコードを同じ友人と共有するために保護が必要です ))

))))

 
Aleksey Mavrin:

Vitalyさん、なんでネガティブになってるんですか?この人は荒らされることを求めているだけなんだから、尊敬してあげないと)

))))

よし、少しは前向きになったか。

 
おはようございます、アドバイスをお願いします。マニュアルには、 InitイベントはOnInit() 関数で処理されると記載されています。このイベントは、金融商品および/または チャートの期間が変更された後にも 生成されます。

ここでは、簡単なコードを紹介します。タイムフレームを変更すると関数が動作しますが、インストゥルメントを変更すると動作しません。それとも、私が「金融商品の変更」という言葉を誤解しているのでしょうか?

int OnInit()
  {
    Print("HALLO");
    return(INIT_SUCCEEDED);
  }
Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 
WinProject:
良いタイミング、アドバイスお願いします。ハンドブックによると、 InitイベントはOnInit() 関数で処理されるそうです。このイベントは、金融商品および/または チャートの期間が変更された後にも 生成されます。

ここでは、簡単なコードを紹介します。タイムフレームを変更すると関数が動作しますが、インストゥルメントを変更すると動作しません。それとも、私が「金融商品の変更」という言葉を誤解しているのでしょうか?

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

正しく認識するためには、こうするのがよいでしょう。チャートに新しいシンボルを置くと、OnDynitが動作し、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, А ГДЕ-ТО ДОПУСТИЛ ОШИБКУ- ПОМОИГИТЕ ПОЖАЛУЙСТА ПОНЯТЬ ГДЕ И В ЧЁМ ЭТА ОШИБКА ПОЛУЧИЛАСЬ?