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

 
Ihor Herasko:

自分でティックを書いて、ストラテジーテスターに 入れる。

が、もっと使いやすいものはないのか?

 
Andrey Sokolov:

が、もっと使いやすいものはないか?

自分でやらないことは書けないのか?それならhttps://www.mql5.com/ru/job

記事はこちらhttps://www.mql5.com/ru/articles/4566

読書したら、各自の流通法則にしたがって引用してください。

MT4が独自のチャートとティックを必要とする場合、記事を読んで、MT5から引用符をエクスポートし、MT4にインポートしてください。

単純にはいかない

もしMT4でプログラミングができるのであれば、MT4のPeriodConverterスクリプトをMetaEditorで開いてみてください。

ZS: そういえば、Wehrstrass関数でチャートを作成するスクリプトをフォーラムに投稿したことがありましたね。

https://www.mql5.com/ru/forum/86386/page988#comment_7843056

 

こんにちは。マーケット付近のポジションや注文の有無のフラグを返す機能(フォーラムで見つけた機能)。テストコードでは、現在値から上下200pips前後で、ポジションがない場合にポジションを建てる ようにします。なぜ、ほぼ同じ価格で1ティックごとにポジションを建てるのですか?

//+------------------------------------------------------------------+
//|                                                    testprpos.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- input parameters
input int      Input1;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!ExistOPNearMarket(Symbol(),-1,200))
     {
      int ticket=OrderSend(Symbol(),OP_BUY,1,Ask,300,0,0,"_",16384,0,clrGreen);
      if(ticket<0)
        {
         Print("OrderSend завершилась с ошибкой #",GetLastError());
        }
      else
         Print("Функция OrderSend успешно выполнена");
      //--- 

     }

  }
//+------------------------------------------------------------------+
bool ExistOPNearMarket(string sy="",int op=-1,int mn=-1,int ds=1000000) 
  {
   int i,k=OrdersTotal(),ot;

   if(sy=="" || sy=="0") sy=Symbol();
   double p=MarketInfo(sy,MODE_POINT);
   if(p==0) if(StringFind(sy,"JPY")<0) p=0.0001; else p=0.01;
   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
        {
         ot=OrderType();
         if((OrderSymbol()==sy) && (op<0 || ot==op)) 
           {
            if(mn<0 || OrderMagicNumber()==mn) 
              {
               if(ot==OP_BUY || ot==OP_BUYLIMIT || ot==OP_BUYSTOP) 
                 {
                  if(MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())<ds*p) return(True);
                 }
               if(ot==OP_SELL || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) 
                 {
                  if(MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))<ds*p) return(True);
                 }
              }
           }
        }
     }
   return(False);
  }
//+------------------------------------------------------------------+
 
EAの移行で、ボタンが非アクティブになってしまい、移行できないのですが、経験された方いらっしゃいますか?
 
Aleksei Petrenko:
EAの移行で、ボタンが非アクティブになってしまい、移行できないのですが、経験された方いらっしゃいますか?
 
Aleksei Petrenko:


 
Ghabo:

こんにちは。機能 マーケット付近でのポジションや注文の有無のフラグを返す(フォーラムで見つけた機能)。テストコードでは、現在の価格の上下200pips前後で、ノーポジションの場合、ポジションを開く ようにします。なぜ、ほぼ同じ価格で1ティックごとにポジションを建てるのですか?

を呼び出す際に、パラメータの数を確認します。

ExistOPNearMarket(Symbol(),-1,200)

とその説明

 
Galim_V:

を呼び出す際に、パラメータの数を確認します。

とその説明

ありがとうございます。
 
Pythonでバイナリボットを作っているのですが、質問:松葉杖を使わずにターミナルからロボットからの信号を送るにはどうしたらいいのでしょうか?
 

取引の担保を計算する方法を教えてください。


2つのアプローチを試してみた

(0.1 * Ask*MarketInfo(Symbol(),MODE_LOTSIZE))/AccountInfoInteger(ACCOUNT_LEVERAGE)


そして、この1枚

FreeMarginCheck=AccountFreeMarginCheck(Symbol(),OP_BUY,0.1);

 double val=AccountFreeMargin()-FreeMarginCheck;



最初のものは、私の預金通貨が 米ドルである場合、EURJPYで奇妙な結果をもたらします。配合に何か加える必要があるのでしょうか?

2番目も時々動作しますが、正しい値で動作することもあれば、おかしな値で動作することもあります(入金によります)。