2017-06-24 17 views
0

私の問題は、私はこれまで、特定の通貨チャートここ の歴史の全てにそれぞれ強気ろうそくや弱気のろうそくに上向きの矢印(緑)と下矢印(赤)を描画するために私のコードをされたいということであるすべてのチャートにmql4で矢印を描く方法は?

//+------------------------------------------------------------------+ 
//|             PriceAction.mq4 | 
//|      Copyright 2017, MetaQuotes Software Corp. | 
//|            https://www.mql5.com | 
//+------------------------------------------------------------------+ 
#property copyright "Copyright 2017, MetaQuotes Software Corp." 
#property link  "https://www.mql5.com" 
#property version "1.00" 
#property strict 
#property indicator_chart_window 
//+------------------------------------------------------------------+ 
//| Custom indicator initialization function       | 
//+------------------------------------------------------------------+ 
int OnInit() 
    { 
//--- indicator buffers mapping 

DrawArrowUp("up"+Bars,Close[1]+10*Point,Lime); 

//--- 
    return(INIT_SUCCEEDED); 
    } 


//+------------------------------------------------------------------+ 
//| Custom indicator iteration function        | 
//+------------------------------------------------------------------+ 
int OnCalculate(const int rates_total, 
       const int prev_calculated, 
       const datetime &time[], 
       const double &open[], 
       const double &high[], 
       const double &low[], 
       const double &close[], 
       const long &tick_volume[], 
       const long &volume[], 
       const int &spread[]) 
    { 
//--- 


//--- return value of prev_calculated for next call 
    return(rates_total); 
} 
//+------------------------------------------------------------------+ 
void DrawArrowUp(string ArrowName,double LinePrice,color LineColor) 
{ 
ObjectCreate(ArrowName, OBJ_ARROW, 0, Time[0], LinePrice); //draw an up arrow 
ObjectSet(ArrowName, OBJPROP_STYLE, STYLE_SOLID); 
ObjectSet(ArrowName, OBJPROP_ARROWCODE, SYMBOL_ARROWUP); 
ObjectSet(ArrowName, OBJPROP_COLOR,LineColor); 
} 

void DrawArrowDown(string ArrowName,double LinePrice,color LineColor) 
{ 
ObjectCreate(ArrowName, OBJ_ARROW, 0, Time[0], LinePrice); //draw an up arrow 
ObjectSet(ArrowName, OBJPROP_STYLE, STYLE_SOLID); 
ObjectSet(ArrowName, OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN); 
ObjectSet(ArrowName, OBJPROP_COLOR,LineColor); 
} 
DrawArrowUp()DrawArrowDn()あなたが名前を必要とMT4機能 ObjectCreate()、オブジェクトタイプを呼び出し、時間あなたの機能で

それだけで最後のバーにある矢印を描き、 と私は、チャートのキャンドルのすべて おかげでそれをしたい、

答えて

0

と価格。 Time[0]にすべてのオブジェクトを置くからです。同じ(最後の)キャンドルに多くの矢印を付けることができます。矢印のプロパティを作成および編集する

const string PREFIX = "ALL_BARS_ARROWS";//to easily delete all objects in OnDeinit() 
void DrawArrow(double linePrice,datetime time,bool bullish){ 
    string name = PREFIX+"arrow"+(bullish?"up":"down")+IntegerToString(time); 
    ObjectCreate(name,OBJ_ARROW,0,time,linePrice); 
    ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID); 
    ObjectSet(name, OBJPROP_ARROWCODE, bullish?SYMBOL_ARROWUP:SYMBOL_ARROWDOWN); 
    ObjectSet(name, OBJPROP_COLOR, bullish? clrLime : clrRed); 
} 

その他のオプションはOnCalculate()機能で今here

を見つけることができます:

int limit, i; 
if(prev_calculated==0){ 
    limit = rates_total-1; 
}else{ 
    limit = rates_total - prev_calculated; 
} 
bool isCandleBullish; 
for(i=limit; i>0; i--){ 
    isCandleBullish = close[i]>open[i];//think of doji candles also 
    DrawArrow(close+10*Point*(isBullish?1:-1),time[i],isCandleBullish); 
} 
関連する問題