mt4 (MetaTrader4)使い倒シストレ

メタトレーダー、自作インジケータ、自作EAで完全自動売買。使えるものは何でも使え。
インジケーター、EA(自動売買システム)製作のご依頼はこちらへ
Googolyen FX Factory
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


にほんブログ村 為替ブログ FX システムトレード派へ
--/--/--(--) --:--:-- | スポンサー広告 | Trackback(-) | Comment(-)
WindowYOnDropped
int WindowYOnDropped( )

エキスパート、スクリプトがドロップされたウィンドウ領域のY軸のピクセル値を返す。
この番号はエキスパート、スクリプトがマウス(ドラッグ&ドロップ)によって動かされた場合有効である。
関連項目:WindowXOnDropped()WindowPriceOnDropped()WindowOnDropped()

Sample:
  Print("エキスパート設置場所(px) x=",WindowXOnDropped()," y=",WindowYOnDropped());


にほんブログ村 為替ブログ FX システムトレード派へ
スポンサーサイト
WindowXOnDropped
int WindowXOnDropped( )

エキスパート、スクリプトがドロップされたウィンドウ領域のX軸のピクセル値を返す。
この番号はエキスパート、スクリプトがマウス(ドラッグ&ドロップ)によって動かされた場合有効である。
関連項目:WindowYOnDropped()WindowOnDropped()

Sample:
Print("Expert dropped point x=",WindowXOnDropped()," y=",WindowYOnDropped());


にほんブログ村 為替ブログ FX システムトレード派へ
WindowsTotal
int WindowsTotal( )

チャート上にあるインジケータウィンドウの数を返す(メインウィンドウも含む)。

Sample:
Print("Windows count = ", WindowsTotal());


にほんブログ村 為替ブログ FX システムトレード派へ
WindowTimeOnDropped
datetime WindowTimeOnDropped( )

エキスパート、スクリプトがドロップされたポイントの時間を返す。
この番号はエキスパート、、スクリプトがマウスによってドロップされた場合有効である。
Note:カスタムインジケータの場合、この値は未定義である。

Sample:
  double   drop_price=WindowPriceOnDropped();
  datetime drop_time=WindowTimeOnDropped();
  //---- may be undefined (zero)
  if(drop_time>0)
    {
     ObjectCreate("Dropped price line", OBJ_HLINE, 0, drop_price);
     ObjectCreate("Dropped time line", OBJ_VLINE, 0, drop_time);
    }


にほんブログ村 為替ブログ FX システムトレード派へ
WindowScreenShot
bool WindowScreenShot(string filename, int size_x, int size_y, int start_bar=-1, int chart_scale=-1, int chart_mode=-1)

現在のチャートのスクリーンショットをGIFファイルとして保存する。
もし失敗すればFALSEを返す。
エラーコードを得るためには、GetLastError()関数を用いる。

Parameters:
filename    -  ファイル名
size_x      -   横ピクセル
size_y      -   縦ピクセル
start_bar   -  スクリーンショットに最初に表示させる足番号。
                もし0をセットすると現在表示されている最初の足番号となる。
                値を設定しない、または負の数を設定すれば、
                チャートの最終部分のスクリーンショットが作られ、
                下げ幅は織り込まれている。
chart_scale  -   スクリーンショットの水平方向のスケール。
                0-5の範囲が設定できる。値を設定しない、または負の数を設定すれば、
                現在のチャートスケールが使われる。
chart_mode  - チャート表示モード。これは以下の値をとる:
                CHART_BAR(0) - カギ足
                CHART_CANDLE(1) - ローソク足
                CHART_LINE(2) - ライン
                値を設定しない、または負の数を設定すれば、現在のモードで表示される。
Sample:
  int lasterror=0;
  //---- tester has closed one or more trades
  if(IsTesting() && ExtTradesCounter< TradesTotal())
    {
     //---- make WindowScreenShot for further checking
     if(!WindowScreenShot("shots\\tester"+ExtShotsCounter+".gif",640,480))
        lasterror=GetLastError();
     else ExtShotsCounter++;
     ExtTradesCounter=TradesTotal();
    }


にほんブログ村 為替ブログ FX システムトレード派へ
WindowRedraw
void WindowRedraw( )

現在のチャートを強制的に再描画させる。
通常、オブジェクトプロパティが変更された後に使われる。

Sample:
  //---- set new properties for some objects
  ObjectMove(object_name1, 0, Time[index], price);
  ObjectSet(object_name1, OBJPROP_ANGLE, angle*2);
  ObjectSet(object_name1, OBJPROP_FONTSIZE, fontsize);
  ObjectSet(line_name, OBJPROP_TIME2, time2);
  ObjectSet(line_name, OBJPROP_ANGLE, line_angle);
  //---- now redraw all
  WindowRedraw();


にほんブログ村 為替ブログ FX システムトレード派へ
WindowPriceOnDropped
double WindowPriceOnDropped( )

エキスパート、スクリプトがドロップされたポイントの価格を返す。
この番号はエキスパート、、スクリプトがマウスによってドロップされた場合有効である。
Note:カスタムインジケータの場合、この値は未定義である。

Sample:
  double   drop_price=WindowPriceOnDropped();
  datetime drop_time=WindowTimeOnDropped();
  //---- may be undefined (zero)
  if(drop_time>0)
    {
     ObjectCreate("Dropped price line", OBJ_HLINE, 0, drop_price);
     ObjectCreate("Dropped time line", OBJ_VLINE, 0, drop_time);
    }


にほんブログ村 為替ブログ FX システムトレード派へ
WindowPriceMin
double WindowPriceMin(int index=0)

現在のチャートの指定されたサブウィンドウ(メインウィンドウ:0, サブウィンドウ1:1, ...,)における垂直方向の最小値を返す。
もしサブウィンドウ番号が指定されていなければ、メインウィンドウの最小値を返す。
関連項目:WindowPriceMax()WindowFirstVisibleBar()WindowBarsPerChart()

Parameters:
index     - サブウィンドウ番号(0:メイン)
Sample:
double   top=WindowPriceMax();
double   bottom=WindowPriceMin();
datetime left=Time[WindowFirstVisibleBar()];
int      right_bound=WindowFirstVisibleBar()-WindowBarsPerChart();
if(right_bound<0) right_bound=0;
datetime right=Time[right_bound]+Period()*60;
//----
ObjectCreate("Padding_rect",OBJ_RECTANGLE,0,left,top,right,bottom);
ObjectSet("Padding_rect",OBJPROP_BACK,true);
ObjectSet("Padding_rect",OBJPROP_COLOR,Blue);
WindowRedraw();


にほんブログ村 為替ブログ FX システムトレード派へ
WindowPriceMax
double WindowPriceMax(int index=0)

現在のチャートの指定されたサブウィンドウ(メインウィンドウ:0, サブウィンドウ1:1, ...,)における垂直方向の最高値を返す。
もしサブウィンドウ番号が指定されていなければ、メインウィンドウの最高値を返す。
関連項目:WindowPriceMin()WindowFirstVisibleBar()WindowBarsPerChart()

Parameters:
index     - サブウィンドウ番号(0:メイン)
Sample:
double   top=WindowPriceMax();
double   bottom=WindowPriceMin();
datetime left=Time[WindowFirstVisibleBar()];
int      right_bound=WindowFirstVisibleBar()-WindowBarsPerChart();
if(right_bound<0) right_bound=0;
datetime right=Time[right_bound]+Period()*60;
//----
ObjectCreate("Padding_rect",OBJ_RECTANGLE,0,left,top,right,bottom);
ObjectSet("Padding_rect",OBJPROP_BACK,true);
ObjectSet("Padding_rect",OBJPROP_COLOR,Blue);
WindowRedraw();


にほんブログ村 為替ブログ FX システムトレード派へ
WindowOnDropped
bool WindowOnDropped( )

エキスパート、カスタムインジケータ、スクリプトがドロップされたウィンドウ番号を返す。
この番号はエキスパート、カスタムインジケータ、スクリプトがマウスによってドロップされた場合有効である。
Note:カスタムインジケータの初期化中(init関数を呼んでいる間)は、この番号は定義されていない。
この関数が返す番号は、カスタムインジケータが動作しているウィンドウ番号(メインウィンドウ:0, サブウィンドウ1:1, ...,)である。一つのカスタムインジケータは動作中に新しいサブウィンドウを作ることができ、サブウィンドウ番号はインジケータがドロップされたウィンドウ番号とは異なるかもしれない。
関連項目:WindowXOnDropped()WindowYOnDropped()

Sample:
if(WindowOnDropped()!=0)
  {
   Print("Indicator 'MyIndicator' must be applied to main chart window!");
   return(false);
  }


にほんブログ村 為替ブログ FX システムトレード派へ
WindowIsVisible
bool WindowIsVisible( int index)

もしチャートサブウィンドウが可視化されているならTRUEを、それ以外はFALSEを返す。
チャートサブウィンドウはインジケータ内の可視化プロパティによって見えなくすることができる。

Parameters:
index     - チャートサブウィンドウ番号
Sample:
  int maywin=WindowFind("MyMACD");
  if(maywin>-1 && WindowIsVisible(maywin)==true)
    Print("window of MyMACD is visible");
  else
    Print("window of MyMACD not found or is not visible");


にほんブログ村 為替ブログ FX システムトレード派へ
WindowHandle
int WindowHandle( string symbol, int timeframe)

チャートのシステムウィンドウハンドルを返す。
もし関数が呼び出されるまで、symboltimeframeのチャートが開かれていなかった場合、0を返す。

Parameters:
symbol     - 計算したい通貨名。NULLを指定すると現在の通貨。
timeframe - 時間枠。時間枠列挙型のどれか。0は現在の時間枠。
Sample:
  int win_handle=WindowHandle("USDX",PERIOD_H1);
  if(win_handle!=0)
    Print("USDX,H1ウィンドウ検出。価格配列はすぐにコピーされます。");


にほんブログ村 為替ブログ FX システムトレード派へ
WindowFirstVisibleBar
int WindowFirstVisibleBar()

現在のチャートの一番左に見えている(初めて現れる)足の番号を返す。足番号は最新から最古の逆順で番号付けされていることに注意するべきである。
現在の足や価格配列で最も新しい足の番号は0である。
最古の足の番号はBars-1である。
もし初めて現れる足番号が2もしくはチャート上に表示されている足の数より小さい場合、チャートウィンドウは完全に表示されていないことを意味し、左にスペースがある。
Sample:
   // work with visible bars.
   int bars_count=WindowBarsPerChart();
   int bar=WindowFirstVisibleBar();
   for(int i=0; i< bars_count; i++,bar--)
     {
      // ...
     }


にほんブログ村 為替ブログ FX システムトレード派へ
WindowFind
int WindowFind(string name)

nameの名前を持つインジケータが見つかれば、この関数はそのインジケータが含まれているウィンドウ番号を返す。それ以外は-1を返す。
Note:もしカスタムインジケータのinit()関数内でWindowFind()関数を呼び出すと-1を返す。
Parameters:
name   -   簡易インジケータ名
Sample:
int win_idx=WindowFind("MACD(12,26,9)");


にほんブログ村 為替ブログ FX システムトレード派へ
WindowExpertName
string WindowExpertName()

この関数が呼ばれたMQL4プログラムに依存する、実行中のエキスパート、スクリプト、カスタムインジケータ、ライブラリの名前を返す。

Sample:
string name=WindowExpertName();
GlobalVariablesDeleteAll(name);


にほんブログ村 為替ブログ FX システムトレード派へ
WindowBarsPerChart
int WindowBarsPerChart()

チャート上に表示されている足の数を返す。

Sample:
// work with visible bars.
int bars_count=WindowBarsPerChart();
int bar=WindowFirstVisibleBar();
for(int i=0; i< bars_count; i++,bar--)
  {
   // ...
  }


にほんブログ村 為替ブログ FX システムトレード派へ
Symbol
string Symbol()

現在の金融商品の名前を文字列で返す。

Sample:
   int total=OrdersTotal();
   for(int pos=0;pos< total;pos++)
     {
      // 注文が閉じているか取り消されているかもしれないので
      // 選択可能かをチェックする
      if(OrderSelect(pos, SELECT_BY_POS)==false) continue;
      if(OrderType()>OP_SELL || OrderSymbol()!=Symbol()) continue;
      // performs some processing...
     }


にほんブログ村 為替ブログ FX システムトレード派へ
RefreshRates
bool RefreshRates()

定義済み変数や直列配列のデータを最新の状態にする。
この関数はエキスパートが長い計算をし、データの更新が必要になった時に使われる。
もしデータの更新ができればTRUEを、それ以外はFALSEを返す。
データの更新ができない時にだけ、クライアント端末内の現在のデータ値となる。

エキスパートやスクリプトは過去データのコピーを操作する。現在の通貨のデータはエキスパートやスクリプトが最初に起動した時にコピーされる。
エキスパートの次回起動時(スクリプトは一度だけ実行され、価格変動に依存しない)、最初のコピーが更新される。
エキスパートやスクリプトが動作している間も、価格は変動し、そしてデータは古いものとなる。

Sample:
   int ticket;
   while(true)
     {
      ticket=OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0,0,"expert comment",255,0,CLR_NONE);
      if(ticket<=0)
        {
         int error=GetLastError();
         //---- not enough money
         if(error==134) break;
         //---- 10 seconds wait
         Sleep(10000);
         //---- refresh price data
         RefreshRates();
         break;
        }
      else
        {
         OrderSelect(ticket,SELECT_BY_TICKET);
         OrderPrint();
         break;
        }
     }


にほんブログ村 為替ブログ FX システムトレード派へ
Period
int Period()

期間(チャート時間枠)で定義された時間(分)を返す。

Sample:
  Print("Period is ", Period());


にほんブログ村 為替ブログ FX システムトレード派へ
HideTestIndicators
void HideTestIndicators(bool hide)

この関数はエキスパートから呼ばれたインジケータを非表示にするフラグを設定する。
エキスパートのテストが終了した後、適切なチャートが開かれる。フラグのセットされたインジケータはテストチャート上に表示されない。
呼ばれた全インジケータはまず現在のフラグに設定される。
テスト中にエキスパートから直接呼ばれたこれらのインジケータだけが、テストチャートに表示されるということを注意しておいた方がよい。
Parameters:
hide    -   もし非表示にしたいならTRUE、それ以外はFALSE

Sample:
   HideTestIndicators(true);
   MaCurrent=iMA(NULL,0,56,0,MODE_EMA,PRICE_CLOSE,0);
   MaPrevious=iMA(NULL,0,56,0,MODE_EMA,PRICE_CLOSE,1);
   HideTestIndicators(false);


にほんブログ村 為替ブログ FX システムトレード派へ
Window functions
OrderType
int OrderType()

現在選択されているオーダーの取引タイプを返す。
これらは以下の数値である。
OP_BUY - 買いポジション
OP_SELL - 売りポジション
OP_BUYLIMIT - 指し値で買う
OP_BUYSTOP - 逆指値で買う
OP_SELLLIMIT - 指し値で売る
OP_SELLSTOP - 逆指値で売る
Note:オーダーはOrderSelect()関数によって事前に選択されていなければならない。

Sample:
  int order_type;
  if(OrderSelect(12, SELECT_BY_POS)==true)
    {
     order_type=OrderType();
     // ...
    }
  else
    Print("OrderSelect() returned error - ",GetLastError());


にほんブログ村 為替ブログ FX システムトレード派へ
OrderTicket
int OrderTicket()

現在選択されているオーダーのチケット番号を返す。
Note:オーダーはOrderSelect()関数によって事前に選択されていなければならない。

Sample:
  if(OrderSelect(12, SELECT_BY_POS)==true)
    order=OrderTicket();
  else
    Print("OrderSelect failed error code is",GetLastError());


にほんブログ村 為替ブログ FX システムトレード派へ
OrderTakeProfit
double OrderTakeProfit()

現在選択されている利確値を返す。
Note:オーダーはOrderSelect()関数によって事前に選択されていなければならない。

Sample:
  if(OrderSelect(12, SELECT_BY_POS)==true)
    Print("Order #",OrderTicket()," profit: ", OrderTakeProfit());
  else
    Print("OrderSelect() returns error - ",GetLastError());


にほんブログ村 為替ブログ FX システムトレード派へ
OrderSymbol
string OrderSymbol()

現在選択されているオーダーの通貨名を返す。
Note:オーダーはOrderSelect()関数によって事前に選択されていなければならない。

Sample:
  if(OrderSelect(12, SELECT_BY_POS)==true)
    Print("symbol of order #", OrderTicket(), " is ", OrderSymbol());
  else
    Print("OrderSelect failed error code is",GetLastError());


にほんブログ村 為替ブログ FX システムトレード派へ
OrderSwap
double OrderSwap()

現在選択されているオーダーのスワップを返す。
Note:オーダーはOrderSelect()関数によって事前に選択されていなければならない。

Sample:
  if(OrderSelect(order_id, SELECT_BY_TICKET)==true)
    Print("Swap for the order #", order_id, " ",OrderSwap());
  else
    Print("OrderSelect failed error code is",GetLastError());


にほんブログ村 為替ブログ FX システムトレード派へ
OrdersTotal
int OrdersTotal()

有効、未決注文の数を返す。

Sample:
  int handle=FileOpen("OrdersReport.csv",FILE_WRITE|FILE_CSV,"\t");
  if(handle<0) return(0);
  // write header
  FileWrite(handle,"#","open price","open time","symbol","lots");
  int total=OrdersTotal();
  // write open orders
  for(int pos=0;pos< total;pos++)
    {
     if(OrderSelect(pos,SELECT_BY_POS)==false) continue;
     FileWrite(handle,OrderTicket(),OrderOpenPrice(),
               OrderOpenTime(),OrderSymbol(),OrderLots());
    }
  FileClose(handle);


にほんブログ村 為替ブログ FX システムトレード派へ
OrderStopLoss
double OrderStopLoss()

現在選択されているオーダーのストップロス値を返す。
Note:オーダーはOrderSelect()関数によって事前に選択されていなければならない。

Sample:
  if(OrderSelect(ticket,SELECT_BY_POS)==true)
    Print("Stop loss value for the order 10 ", OrderStopLoss());
  else
    Print("OrderSelect failed error code is",GetLastError());


にほんブログ村 為替ブログ FX システムトレード派へ
OrdersHistoryTotal
int OrdersHistoryTotal()

端末内から読み込めるアカウントヒストリー内の決済された注文の数を返す。
ヒストリーリストサイズは端末の"Account history"タブの設定に依存する。

Sample:
  // retrieving info from trade history
  int i,hstTotal=OrdersHistoryTotal();
  for(i=0;i< hstTotal;i++)
    {
     //---- check selection result
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
       {
        Print("Access to history failed with error (",GetLastError(),")");
        break;
       }
     // some work with order
    }


にほんブログ村 為替ブログ FX システムトレード派へ
OrderSend
int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration, color Color=CLR_NONE)

注文や未決注文をするための主関数
トレードサーバによって挿入されたチケット番号を返し、もし失敗すれば-1を返す。
エラー情報の詳細を得たい場合はGetLastError()関数を呼び出す。
Notes:注文(OP_SELLやOP_BUY)する際、Bid(売値)、Ask(買値)の最新の価格しかオープン価格に用いることはできない。もし現在の値を用いて安全に取引をするなら、MaketInfo()関数にMODE_BID、MODE_ASK変数を指定すればよい。
計算済みや正規化されていない価格は適用できない。
もしスレッド価格に要求したエントリー価格が無かったり、小数点以下の桁数が一致していない非正規価格だった場合、129 (ERR_INVALID_PRICE)エラーが生成される。
もしオーダー価格があまりにも古いものならば、slippage変数に関係なく138 (ERR_REQUOTE)エラーを生成する。
もしオーダー価格があまりにも古いが、スレッドに存在している場合、price+-slippageの範囲以内に現在の価格があるならば、その価格で約定されるだろう。

ストップロス値と利確値は市場価格とあまりに近くすることはできない。ストップロス値と価格の最低差はMakertInfo()関数にMODE_STOPLEVEL変数を付けることで得られる。もし間違えたり非正規ストップロス値の場合は、130 (ERR_INVALID_STOPS))エラーが生成される。

未決注文を置く場合、そのオープン価格を市場価格とあまりに近くすることはできない。未決注文と価格の最低差はMakertInfo()関数にMODE_STOPLEVEL変数を付けることで得られる。未決注文のオープン価格を失敗した場合、130 (ERR_INVALID_STOPS))エラーが生成される。

未決注文の有効期限が使えないトレードサーバもある。この場合、expiration変数に0でない値を指定すると、147(ERR_TRADE_EXPIRATION_DENIED)エラーを生成する。

あるトレードサーバでは、注文と未決注文の総数に制限を設けているところもある。もしその制限を超えてしまうと、新しいポジションを持つこと(未決注文を置くこと)はできず、トレードサーバから148 (ERR_TRADE_TOO_MANY_ORDERS))エラーが返ってくる。

Parameters:
symbol       -   通貨
cmd           -   取引タイプ。取引操作子のどれか。
volume       -   ロット数
price        -   オープン価格
slippage     -   スリッページ
stoploss     -   ストップロス値
takeprofit   -   利確値
comment       -   コメント。コメントの最後の部分はサーバーによって変更される。
magic         -   オーダー識別番号。ユーザ定義の識別番号。
expiration   -   有効期限
arrow_color  -   チャート上の矢印の色。
              もしこの変数が間違っているかCLR_NONE値であれば
              チャート上に何も描かれない。
Sample:
  int ticket;
  if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25)
    {
     ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,
                      Ask+25*Point,"My order #2",16384,0,Green);
     if(ticket<0)
       {
        Print("OrderSend failed with error #",GetLastError());
        return(0);
       }
    }



にほんブログ村 為替ブログ FX システムトレード派へ
Designed by aykm.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。