コーディングのヘルプ - ページ 606 1...599600601602603604605606607608609610611612613...786 新しいコメント Mariusz 2016.03.13 07:32 #6051 こんにちは。 私のインジケーターに問題があります。このコードは非常によく動作します。 //+------------------------------------------------------------------+ //| RSMA.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "Tartut" #property link "" #property indicator_separate_window #property indicator_minimum -40 #property indicator_maximum 100 #property indicator_level1 19 #property indicator_level2 -19 #property indicator_level3 0 #property indicator_buffers 3 #property indicator_color1 Lime #property indicator_color2 Yellow #property indicator_color3 MediumOrchid extern int RSI_Period = 9; extern int RSI_Applied_Price = 0;//0=close, 1=open, 2=high, 3=low, 4=(high+low)/2, 5=(high+low+close)/3, 6=(high+low+close+close)/4 extern int MA_Period = 12; extern int MA_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA double MA_Array[],RSI[], Histo[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators setting SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2); SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1); SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); IndicatorShortName("RSMA"); SetIndexBuffer(0,Histo); SetIndexLabel(0,"RSMA"); SetIndexBuffer(1,MA_Array); SetIndexLabel(1,"MA("+MA_Period+")"); SetIndexBuffer(2,RSI); SetIndexLabel(2,"RSI("+RSI_Period+")"); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit = Bars - IndicatorCounted() - 1; //---- indicator calculation ArrayResize(RSI,limit+1); ArrayResize(MA_Array,limit+1); for(int i=limit; i>=0; i--) { RSI= iRSI(NULL,0,RSI_Period,RSI_Applied_Price,i); } for(i=limit; i>=0; i--) { MA_Array = iMAOnArray(RSI,0,MA_Period,0,MA_Method,i); } for(i=limit; i>=0; i--) { Histo = RSI-MA_Array; } //---- return(0); } //+------------------------------------------------------------------+ RSIとEMAのラインを削除したいのですが、そうするとヒストグラムの値が変わってしまうのです :/。 添付ファイルに2つのインジケータを追加しました。私を助けてください 私の英語のために申し訳ありません。 ファイル: rsma_histogram.mq4 3 kb Coding help [警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 オジャラEA Mladen Rakic 2016.03.13 09:30 #6052 Tartut: こんにちは。私のインジケーターに問題があります。このコードは非常によく動作します。 //+------------------------------------------------------------------+ //| RSMA.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "Tartut" #property link "" #property indicator_separate_window #property indicator_minimum -40 #property indicator_maximum 100 #property indicator_level1 19 #property indicator_level2 -19 #property indicator_level3 0 #property indicator_buffers 3 #property indicator_color1 Lime #property indicator_color2 Yellow #property indicator_color3 MediumOrchid extern int RSI_Period = 9; extern int RSI_Applied_Price = 0;//0=close, 1=open, 2=high, 3=low, 4=(high+low)/2, 5=(high+low+close)/3, 6=(high+low+close+close)/4 extern int MA_Period = 12; extern int MA_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA double MA_Array[],RSI[], Histo[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators setting SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2); SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1); SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); IndicatorShortName("RSMA"); SetIndexBuffer(0,Histo); SetIndexLabel(0,"RSMA"); SetIndexBuffer(1,MA_Array); SetIndexLabel(1,"MA("+MA_Period+")"); SetIndexBuffer(2,RSI); SetIndexLabel(2,"RSI("+RSI_Period+")"); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit = Bars - IndicatorCounted() - 1; //---- indicator calculation ArrayResize(RSI,limit+1); ArrayResize(MA_Array,limit+1); for(int i=limit; i>=0; i--) { RSI= iRSI(NULL,0,RSI_Period,RSI_Applied_Price,i); } for(i=limit; i>=0; i--) { MA_Array = iMAOnArray(RSI,0,MA_Period,0,MA_Method,i); } for(i=limit; i>=0; i--) { Histo = RSI-MA_Array; } //---- return(0); } //+------------------------------------------------------------------+[/CODE] I would like delete RSI and EMA line, but when I do it, histogram change value. :/ I add attachment two indicators. Help me! Sorry for my English. 冒頭を次のように変更してください。 [CODE]//+------------------------------------------------------------------+ //| RSMA.mq4 //| | //| | //+------------------------------------------------------------------+ #property コピーライト "Tartut" #property リンク "" #property indicator_separate_window(インジケーター・セパレート・ウィンドウ #property indicator_minimum -40 #property indicator_maximum 100 (インジケーターの最大値) #property indicator_level1 19 #property indicator_level2 -19 #プロパティ indicator_level3 0 #property indicator_buffers 1 (インジケーターバッファー) #property indicator_color1 ライム extern int RSI_Period = 9; extern int RSI_Applied_Price = 0;/0=close, 1=open, 2=high, 3=low, 4=(high+low)/2, 5=(high+low+close)/3, 6=(high+low+close+close)/4 extern int MA_Period = 12; extern int MA_Method = 1;// 0=SMA、1=EMA、2=SMMA、3=LWMA double MA_Array[]、RSI[]、Histo[]。 //+------------------------------------------------------------------+ //| カスタムインジケータ初期化関数 //+------------------------------------------------------------------+ int init() { IndicatorBuffers)3)です。 //---- インジケータ設定 Mariusz 2016.03.13 14:47 #6053 mladen: 冒頭をこれに変更する: //+------------------------------------------------------------------+ //| RSMA.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "Tartut" #property link "" #property indicator_separate_window #property indicator_minimum -40 #property indicator_maximum 100 #property indicator_level1 19 #property indicator_level2 -19 #property indicator_level3 0 #property indicator_buffers 1 #property indicator_color1 Lime extern int RSI_Period = 9; extern int RSI_Applied_Price = 0;//0=close, 1=open, 2=high, 3=low, 4=(high+low)/2, 5=(high+low+close)/3, 6=(high+low+close+close)/4 extern int MA_Period = 12; extern int MA_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA double MA_Array[],RSI[], Histo[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorBuffers)3); //---- indicators setting イェー!うまくいったね。 ありがとうございます。 Mariusz 2016.03.14 10:14 #6054 次の問題があります。私のインジケータは、現在のバーの値を変更しません。チャートをリフレッシュする必要があります。 //+------------------------------------------------------------------+ //| RSMA Histogram.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "Tartut" #property link "" #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Lime #property indicator_minimum -35 #property indicator_maximum 35 #property indicator_level1 19 #property indicator_level2 -19 #property indicator_level3 0 //#property indicator_color2 Yellow //#property indicator_color3 MediumOrchid extern double OverSold=-19.0; extern double OverBought=19.0; extern int RSI_Period=9; extern int RSI_Applied_Price=0; extern int MA_Period=12; extern int MA_Method=1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA extern bool ShowArrows=true; extern color OverSoldColor=Gold; extern color OverBoughtColor = Gold; extern string arrowsIdentifier = "RSMA arrows"; extern int arrowsWidth = 1; extern int IDWindow=1; extern string _Divergence="<>"; extern string _CBars="<>"; extern int CBars=99; extern bool CheckDivergence=false; extern bool CheckSlowDownMomentum=false; extern string DivergenceIndentifier="RSMA Divergence"; double MA_Array[],RSI[],Histo[]; int trend[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(3); //---- indicators setting SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2); SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1); SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); IndicatorShortName("RSMA Histogram"); SetIndexBuffer(0,Histo); SetIndexLabel(0,"RSMA"); SetIndexBuffer(1,MA_Array); SetIndexLabel(1,"MA("+MA_Period+")"); SetIndexBuffer(2,RSI); SetIndexLabel(2,"RSI("+RSI_Period+")"); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { deleteArrows(); fnDeleteAllDivergence(); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit=Bars-IndicatorCounted(); if(limit<0) return(-1); if(limit>0) limit--; //---- indicator calculation ArrayResize(trend,limit+1); ArrayResize(RSI,limit+1); ArrayResize(MA_Array,limit+1); for(int i=0; i<limit; i++) { RSI=iRSI(NULL,0,RSI_Period,RSI_Applied_Price,i); } for(i=0; i<limit; i++) { MA_Array=iMAOnArray(RSI,0,MA_Period,0,MA_Method,i); } for(i=0; i<limit; i++) { Histo=RSI-MA_Array; if(Histo>OverBought) trend=1; else if(Histo<OverSold) trend=-1; manageArrow(i); } if(CheckDivergence==true) { int x= CBars/3; for(i=0; i<x; i++) { double open0=iOpen(NULL,0,i); double close0= iClose(NULL,0,i); double open1 = iOpen(NULL,0,i+1); double close1= iClose(NULL,0,i+1); double open2 = iOpen(NULL,0,i+2); double close2 = iClose(NULL, 0, i+2); bool momentum = true; if(CheckSlowDownMomentum==true) { double bar0 = MathAbs(open0-close0); double bar1 = MathAbs(open1-close1); double bar2 = MathAbs(open2-close2); if(bar0<bar1 && bar1<bar2) momentum=true; else momentum=false; } //PUT if(Histo<Histo && Histo<Histo && open0<close0 && open1<close1 && open2<close2 && momentum==true) { double high0 = iHigh(NULL, 0, i); double high2 = iHigh(NULL, 0, i+2); TrendCreate(DivergenceIndentifier+"Sub"+i,Time,Histo,Time,Histo,Red,STYLE_SOLID,1,IDWindow); TrendCreate(DivergenceIndentifier+"Main"+i,Time,high2,Time,high0,Red,STYLE_SOLID,1,0); } else if(Histo>Histo && Histo>Histo && open0>close0 && open1>close1 && open2>close2 && momentum==true) { double low0 = iLow(NULL, 0, i); double low2 = iLow(NULL, 0, i+2); TrendCreate(DivergenceIndentifier+"Sub"+i,Time,Histo,Time,Histo,Red,STYLE_SOLID,1,IDWindow); TrendCreate(DivergenceIndentifier+"Main"+i,Time,low2,Time,low0,Red,STYLE_SOLID,1,0); } } } return(0); } //+------------------------------------------------------------------+ void manageArrow(int i) { if(ShowArrows) { deleteArrow(Time); if(trend ==-1) drawArrow(i,OverBoughtColor,159,false); if(trend == 1) drawArrow(i,OverSoldColor ,159,true ); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void fnDeleteAllDivergence() { string lookFor=DivergenceIndentifier; string objectName; int lookForLength=StringLen(lookFor); for(int i=ObjectsTotal()-1; i>=0; i--) { objectName=ObjectName(i); if(StringSubstr(objectName,0,lookForLength)==lookFor) ObjectDelete(objectName); } } // // // // // void drawArrow(int i,color theColor,int theCode,bool up) { string name=arrowsIdentifier+":"+Time; double gap=3.0*iATR(NULL,0,10,i)/4.0; //20 // // // // // ObjectCreate(name,OBJ_ARROW,0,Time,0); ObjectSet(name,OBJPROP_ARROWCODE,theCode); ObjectSet(name,OBJPROP_COLOR,theColor); ObjectSet(name,OBJPROP_WIDTH,arrowsWidth); if(up) ObjectSet(name,OBJPROP_PRICE1,High+gap); else ObjectSet(name,OBJPROP_PRICE1,Low-gap); } // // // // // void deleteArrows() { string lookFor = arrowsIdentifier+":"; int lookForLength = StringLen(lookFor); for(int i=ObjectsTotal()-1; i>=0; i--) { string objectName=ObjectName(i); if(StringSubstr(objectName,0,lookForLength)==lookFor) ObjectDelete(objectName); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void deleteArrow(datetime time) { string lookFor=arrowsIdentifier+":"+time; ObjectDelete(lookFor); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // // // // // bool TrendCreate(string name="Line1", datetime time1=0, // first point time double price1=0, // first point price datetime time2=0, // second point time double price2=0, // second point price const color clr=clrRed, // line color const ENUM_LINE_STYLE style=STYLE_SOLID, // line style const int width=1, const int window=0 // line width // highlight to move ) { //--- reset the error value ResetLastError(); //--- create a trend line by the given coordinates if(!ObjectCreate(name,OBJ_TREND,window,time1,price1,time2,price2)) { Print(__FUNCTION__,": failed to create a trend line! Error code = ",GetLastError()); return(false); } //--- set line color ObjectSetInteger(0,name,OBJPROP_COLOR,clr); //--- set line display style ObjectSetInteger(0,name,OBJPROP_STYLE,style); //--- set line width ObjectSetInteger(0,name,OBJPROP_WIDTH,width); ObjectSetInteger(0,name,OBJPROP_SELECTED,false); //--- enable (true) or disable (false) the mode of continuation of the line's display to the right ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false); //--- successful execution return(true); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CleanPoint(int i,double &first[],double &second[]) { if((second!=EMPTY_VALUE) &&(second !=EMPTY_VALUE)) second=EMPTY_VALUE; else if((first!=EMPTY_VALUE) && (first!=EMPTY_VALUE) && (first==EMPTY_VALUE)) first=EMPTY_VALUE; } // // // // // void PlotPoint(int i,double &first[],double &second[],double &from[]) { if(first==EMPTY_VALUE) { if(first==EMPTY_VALUE) { first = from; first = from; second = EMPTY_VALUE; } else { second = from; second = from; first = EMPTY_VALUE; } } else { first = from; second = EMPTY_VALUE; } } //+------------------------------------------------------------------+ //--- Coding help Alert needed on profitable エキスパートアドバイザー - 雑多な質問 Mladen Rakic 2016.03.14 11:02 #6055 Tartut: 次の問題があります。私のインジケータは、現在のバーの値を変更しません。チャートをリフレッシュする必要があります。 このように試してみてください。 //+------------------------------------------------------------------+ //| RSMA Histogram.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "Tartut" #property link "" #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Lime #property indicator_minimum -35 #property indicator_maximum 35 #property indicator_level1 19 #property indicator_level2 -19 #property indicator_level3 0 //#property indicator_color2 Yellow //#property indicator_color3 MediumOrchid extern double OverSold=-19.0; extern double OverBought=19.0; extern int RSI_Period=9; extern int RSI_Applied_Price=0; extern int MA_Period=12; extern int MA_Method=1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA extern bool ShowArrows=true; extern color OverSoldColor=Gold; extern color OverBoughtColor = Gold; extern string arrowsIdentifier = "RSMA arrows"; extern int arrowsWidth = 1; extern int IDWindow=1; extern string _Divergence="<>"; extern string _CBars="<>"; extern int CBars=99; extern bool CheckDivergence=false; extern bool CheckSlowDownMomentum=false; extern string DivergenceIndentifier="RSMA Divergence"; double MA_Array[],RSI[],Histo[]; double trend[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(4); //---- indicators setting SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2); SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1); SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); IndicatorShortName("RSMA Histogram"); SetIndexBuffer(0,Histo); SetIndexLabel(0,"RSMA"); SetIndexBuffer(1,MA_Array); SetIndexLabel(1,"MA("+MA_Period+")"); SetIndexBuffer(2,RSI); SetIndexLabel(2,"RSI("+RSI_Period+")"); SetIndexBuffer(3,trend); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { deleteArrows(); fnDeleteAllDivergence(); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; int limit = MathMin(Bars-counted_bars,Bars-1); //---- indicator calculation Comment(limit); for(int i=0; i<limit; i++) { RSI=iRSI(NULL,0,RSI_Period,RSI_Applied_Price,i); } for(i=0; i<limit; i++) { MA_Array=iMAOnArray(RSI,0,MA_Period,0,MA_Method,i); } for(i=0; i<limit; i++) { Histo=RSI-MA_Array; if(Histo>OverBought) trend=1; else if(Histo<OverSold) trend=-1; manageArrow(i); } if(CheckDivergence==true) { int x= CBars/3; for(i=0; i<x; i++) { double open0=iOpen(NULL,0,i); double close0= iClose(NULL,0,i); double open1 = iOpen(NULL,0,i+1); double close1= iClose(NULL,0,i+1); double open2 = iOpen(NULL,0,i+2); double close2 = iClose(NULL, 0, i+2); bool momentum = true; if(CheckSlowDownMomentum==true) { double bar0 = MathAbs(open0-close0); double bar1 = MathAbs(open1-close1); double bar2 = MathAbs(open2-close2); if(bar0<bar1 && bar1<bar2) momentum=true; else momentum=false; } //PUT if(Histo<Histo && Histo<Histo && open0<close0 && open1<close1 && open2<close2 && momentum==true) { double high0 = iHigh(NULL, 0, i); double high2 = iHigh(NULL, 0, i+2); TrendCreate(DivergenceIndentifier+"Sub"+i,Time,Histo,Time,Histo,Red,STYLE_SOLID,1,IDWindow); TrendCreate(DivergenceIndentifier+"Main"+i,Time,high2,Time,high0,Red,STYLE_SOLID,1,0); } else if(Histo>Histo && Histo>Histo && open0>close0 && open1>close1 && open2>close2 && momentum==true) { double low0 = iLow(NULL, 0, i); double low2 = iLow(NULL, 0, i+2); TrendCreate(DivergenceIndentifier+"Sub"+i,Time,Histo,Time,Histo,Red,STYLE_SOLID,1,IDWindow); TrendCreate(DivergenceIndentifier+"Main"+i,Time,low2,Time,low0,Red,STYLE_SOLID,1,0); } } } return(0); } //+------------------------------------------------------------------+ void manageArrow(int i) { if(ShowArrows) { deleteArrow(Time); if(trend ==-1) drawArrow(i,OverBoughtColor,159,false); if(trend == 1) drawArrow(i,OverSoldColor ,159,true ); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void fnDeleteAllDivergence() { string lookFor=DivergenceIndentifier; string objectName; int lookForLength=StringLen(lookFor); for(int i=ObjectsTotal()-1; i>=0; i--) { objectName=ObjectName(i); if(StringSubstr(objectName,0,lookForLength)==lookFor) ObjectDelete(objectName); } } // // // // // void drawArrow(int i,color theColor,int theCode,bool up) { string name=arrowsIdentifier+":"+Time; double gap=3.0*iATR(NULL,0,10,i)/4.0; //20 // // // // // ObjectCreate(name,OBJ_ARROW,0,Time,0); ObjectSet(name,OBJPROP_ARROWCODE,theCode); ObjectSet(name,OBJPROP_COLOR,theColor); ObjectSet(name,OBJPROP_WIDTH,arrowsWidth); if(up) ObjectSet(name,OBJPROP_PRICE1,High+gap); else ObjectSet(name,OBJPROP_PRICE1,Low-gap); } // // // // // void deleteArrows() { string lookFor = arrowsIdentifier+":"; int lookForLength = StringLen(lookFor); for(int i=ObjectsTotal()-1; i>=0; i--) { string objectName=ObjectName(i); if(StringSubstr(objectName,0,lookForLength)==lookFor) ObjectDelete(objectName); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void deleteArrow(datetime time) { string lookFor=arrowsIdentifier+":"+time; ObjectDelete(lookFor); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // // // // // bool TrendCreate(string name="Line1", datetime time1=0, // first point time double price1=0, // first point price datetime time2=0, // second point time double price2=0, // second point price const color clr=clrRed, // line color const ENUM_LINE_STYLE style=STYLE_SOLID, // line style const int width=1, const int window=0 // line width // highlight to move ) { //--- reset the error value ResetLastError(); //--- create a trend line by the given coordinates if(!ObjectCreate(name,OBJ_TREND,window,time1,price1,time2,price2)) { Print(__FUNCTION__,": failed to create a trend line! Error code = ",GetLastError()); return(false); } //--- set line color ObjectSetInteger(0,name,OBJPROP_COLOR,clr); //--- set line display style ObjectSetInteger(0,name,OBJPROP_STYLE,style); //--- set line width ObjectSetInteger(0,name,OBJPROP_WIDTH,width); ObjectSetInteger(0,name,OBJPROP_SELECTED,false); //--- enable (true) or disable (false) the mode of continuation of the line's display to the right ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false); //--- successful execution return(true); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CleanPoint(int i,double &first[],double &second[]) { if((second!=EMPTY_VALUE) &&(second !=EMPTY_VALUE)) second=EMPTY_VALUE; else if((first!=EMPTY_VALUE) && (first!=EMPTY_VALUE) && (first==EMPTY_VALUE)) first=EMPTY_VALUE; } // // // // // void PlotPoint(int i,double &first[],double &second[],double &from[]) { if(first==EMPTY_VALUE) { if(first==EMPTY_VALUE) { first = from; first = from; second = EMPTY_VALUE; } else { second = from; second = from; first = EMPTY_VALUE; } } else { first = from; second = EMPTY_VALUE; } } //+------------------------------------------------------------------+ //--- Coding help オジャラEA Alert needed on profitable Mariusz 2016.03.14 11:11 #6056 mladen: このように試してみてください。 You are the best ありがとうございます。 Rad Lam 2016.03.15 06:13 #6057 こんにちは、どなたかこのインジケーターを緑のアップしか表示されないので、赤いバーもダウンで表示されるように修正していただけませんか?よろしくお願いします。(Deltaforce Volume) また、バーの太さを調整できるように修正していただけませんか?(Deltaforce)ありがとうございます。 ファイル: deltaforce_volume.mq4 3 kb deltaforce.mq4 3 kb Rogelio Hernandez 2016.03.15 17:41 #6058 こんにちは、MladenとMr.Tools インジケータやEAでできるかもしれませんが、どうしても必要なのです。 私は半自動注文システムが必要です。つまり、私は最初の取引を手動で取得し、SLとTPで「成行注文」、SLがヒットした場合、システムはSLで反対方向に新しい注文を作成します(新しい注文はエントリ)、最初の取引のエントリは現在SLとPipで常に同じ値であり、私はセットアップで、何枚またはミニロットはマーチンゲイルの一種で、進行中の貿易に開かれるべきである、実際にはありませんが置きたいと思うのですが、手動。TPがヒットするまで、システムは新しい注文を作成する必要があります。TPがヒットすると、システムは停止するか閉じます。私は、私が説明で混乱を作成しなかったことを願っています!;-) 私が使用することができるこのような何かがありますか? どうもありがとうございました。 Mladen Rakic 2016.03.15 18:44 #6059 laborax: ムラデンさん、ツールズさん、こんにちは私は問題があり、これを行う方法がわからない、多分インジケータまたはEAで、しかし私は本当にそれが必要です、多分あなたは私を助けることができます。 私は半自動注文システムが必要です。つまり、私は最初の取引を手動で取得し、SLとTPで「成行注文」、SLがヒットした場合、システムはSLで反対方向に新しい注文を作成します(新しい注文はエントリです)、最初の取引のエントリは現在SLとPIPSで常に同じ値であり、私はセットアップで手動で置きたい、何枚またはミニロットはマーチンゲールの種類、しかし実際にはない進歩した取引で開かれるべきであるか?TPがヒットするまで、システムは新しい注文を作成する必要があります。TPがヒットすると、システムは停止するか閉じます。私は、私が説明で混乱を作成しなかったことを願っています!;-) このような使い方ができるものがあるのでしょうか? どうもありがとうございます。 ラバックス このルールはEAを作るには緩すぎるし、私の知る限りではそのようなEAはない。 Rogelio Hernandez 2016.03.15 18:50 #6060 このEAを見つけました、私が探していたものです...あなたはそれについてどう思いますか? https://www.mql5.com/en/forum/184476 1...599600601602603604605606607608609610611612613...786 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは。
私のインジケーターに問題があります。このコードは非常によく動作します。
//| RSMA.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright "Tartut"
#property link ""
#property indicator_separate_window
#property indicator_minimum -40
#property indicator_maximum 100
#property indicator_level1 19
#property indicator_level2 -19
#property indicator_level3 0
#property indicator_buffers 3
#property indicator_color1 Lime
#property indicator_color2 Yellow
#property indicator_color3 MediumOrchid
extern int RSI_Period = 9;
extern int RSI_Applied_Price = 0;//0=close, 1=open, 2=high, 3=low, 4=(high+low)/2, 5=(high+low+close)/3, 6=(high+low+close+close)/4
extern int MA_Period = 12;
extern int MA_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA
double MA_Array[],RSI[], Histo[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators setting
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
IndicatorShortName("RSMA");
SetIndexBuffer(0,Histo);
SetIndexLabel(0,"RSMA");
SetIndexBuffer(1,MA_Array);
SetIndexLabel(1,"MA("+MA_Period+")");
SetIndexBuffer(2,RSI);
SetIndexLabel(2,"RSI("+RSI_Period+")");
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int limit = Bars - IndicatorCounted() - 1;
//---- indicator calculation
ArrayResize(RSI,limit+1);
ArrayResize(MA_Array,limit+1);
for(int i=limit; i>=0; i--)
{
RSI= iRSI(NULL,0,RSI_Period,RSI_Applied_Price,i);
}
for(i=limit; i>=0; i--)
{
MA_Array = iMAOnArray(RSI,0,MA_Period,0,MA_Method,i);
}
for(i=limit; i>=0; i--)
{
Histo = RSI-MA_Array;
}
//----
return(0);
}
//+------------------------------------------------------------------+RSIとEMAのラインを削除したいのですが、そうするとヒストグラムの値が変わってしまうのです :/。
添付ファイルに2つのインジケータを追加しました。私を助けてください
私の英語のために申し訳ありません。
こんにちは。
私のインジケーターに問題があります。このコードは非常によく動作します。
//| RSMA.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright "Tartut"
#property link ""
#property indicator_separate_window
#property indicator_minimum -40
#property indicator_maximum 100
#property indicator_level1 19
#property indicator_level2 -19
#property indicator_level3 0
#property indicator_buffers 3
#property indicator_color1 Lime
#property indicator_color2 Yellow
#property indicator_color3 MediumOrchid
extern int RSI_Period = 9;
extern int RSI_Applied_Price = 0;//0=close, 1=open, 2=high, 3=low, 4=(high+low)/2, 5=(high+low+close)/3, 6=(high+low+close+close)/4
extern int MA_Period = 12;
extern int MA_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA
double MA_Array[],RSI[], Histo[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators setting
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
IndicatorShortName("RSMA");
SetIndexBuffer(0,Histo);
SetIndexLabel(0,"RSMA");
SetIndexBuffer(1,MA_Array);
SetIndexLabel(1,"MA("+MA_Period+")");
SetIndexBuffer(2,RSI);
SetIndexLabel(2,"RSI("+RSI_Period+")");
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int limit = Bars - IndicatorCounted() - 1;
//---- indicator calculation
ArrayResize(RSI,limit+1);
ArrayResize(MA_Array,limit+1);
for(int i=limit; i>=0; i--)
{
RSI= iRSI(NULL,0,RSI_Period,RSI_Applied_Price,i);
}
for(i=limit; i>=0; i--)
{
MA_Array = iMAOnArray(RSI,0,MA_Period,0,MA_Method,i);
}
for(i=limit; i>=0; i--)
{
Histo = RSI-MA_Array;
}
//----
return(0);
}
//+------------------------------------------------------------------+[/CODE]
I would like delete RSI and EMA line, but when I do it, histogram change value. :/
I add attachment two indicators. Help me!
Sorry for my English.冒頭を次のように変更してください。
[CODE]//+------------------------------------------------------------------+
//| RSMA.mq4
//| |
//| |
//+------------------------------------------------------------------+
#property コピーライト "Tartut"
#property リンク ""
#property indicator_separate_window(インジケーター・セパレート・ウィンドウ
#property indicator_minimum -40
#property indicator_maximum 100 (インジケーターの最大値)
#property indicator_level1 19
#property indicator_level2 -19
#プロパティ indicator_level3 0
#property indicator_buffers 1 (インジケーターバッファー)
#property indicator_color1 ライム
extern int RSI_Period = 9;
extern int RSI_Applied_Price = 0;/0=close, 1=open, 2=high, 3=low, 4=(high+low)/2, 5=(high+low+close)/3, 6=(high+low+close+close)/4
extern int MA_Period = 12;
extern int MA_Method = 1;// 0=SMA、1=EMA、2=SMMA、3=LWMA
double MA_Array[]、RSI[]、Histo[]。
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers)3)です。
//---- インジケータ設定冒頭をこれに変更する:
//| RSMA.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright "Tartut"
#property link ""
#property indicator_separate_window
#property indicator_minimum -40
#property indicator_maximum 100
#property indicator_level1 19
#property indicator_level2 -19
#property indicator_level3 0
#property indicator_buffers 1
#property indicator_color1 Lime
extern int RSI_Period = 9;
extern int RSI_Applied_Price = 0;//0=close, 1=open, 2=high, 3=low, 4=(high+low)/2, 5=(high+low+close)/3, 6=(high+low+close+close)/4
extern int MA_Period = 12;
extern int MA_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA
double MA_Array[],RSI[], Histo[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers)3);
//---- indicators settingイェー!うまくいったね。 ありがとうございます。
次の問題があります。私のインジケータは、現在のバーの値を変更しません。チャートをリフレッシュする必要があります。
//| RSMA Histogram.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright "Tartut"
#property link ""
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Lime
#property indicator_minimum -35
#property indicator_maximum 35
#property indicator_level1 19
#property indicator_level2 -19
#property indicator_level3 0
//#property indicator_color2 Yellow
//#property indicator_color3 MediumOrchid
extern double OverSold=-19.0;
extern double OverBought=19.0;
extern int RSI_Period=9;
extern int RSI_Applied_Price=0;
extern int MA_Period=12;
extern int MA_Method=1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA
extern bool ShowArrows=true;
extern color OverSoldColor=Gold;
extern color OverBoughtColor = Gold;
extern string arrowsIdentifier = "RSMA arrows";
extern int arrowsWidth = 1;
extern int IDWindow=1;
extern string _Divergence="<>";
extern string _CBars="<>";
extern int CBars=99;
extern bool CheckDivergence=false;
extern bool CheckSlowDownMomentum=false;
extern string DivergenceIndentifier="RSMA Divergence";
double MA_Array[],RSI[],Histo[];
int trend[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(3);
//---- indicators setting
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
IndicatorShortName("RSMA Histogram");
SetIndexBuffer(0,Histo);
SetIndexLabel(0,"RSMA");
SetIndexBuffer(1,MA_Array);
SetIndexLabel(1,"MA("+MA_Period+")");
SetIndexBuffer(2,RSI);
SetIndexLabel(2,"RSI("+RSI_Period+")");
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int deinit()
{
deleteArrows();
fnDeleteAllDivergence();
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int limit=Bars-IndicatorCounted();
if(limit<0) return(-1);
if(limit>0) limit--;
//---- indicator calculation
ArrayResize(trend,limit+1);
ArrayResize(RSI,limit+1);
ArrayResize(MA_Array,limit+1);
for(int i=0; i<limit; i++)
{
RSI=iRSI(NULL,0,RSI_Period,RSI_Applied_Price,i);
}
for(i=0; i<limit; i++)
{
MA_Array=iMAOnArray(RSI,0,MA_Period,0,MA_Method,i);
}
for(i=0; i<limit; i++)
{
Histo=RSI-MA_Array;
if(Histo>OverBought)
trend=1;
else if(Histo<OverSold)
trend=-1;
manageArrow(i);
}
if(CheckDivergence==true)
{
int x= CBars/3;
for(i=0; i<x; i++)
{
double open0=iOpen(NULL,0,i);
double close0= iClose(NULL,0,i);
double open1 = iOpen(NULL,0,i+1);
double close1= iClose(NULL,0,i+1);
double open2 = iOpen(NULL,0,i+2);
double close2 = iClose(NULL, 0, i+2);
bool momentum = true;
if(CheckSlowDownMomentum==true)
{
double bar0 = MathAbs(open0-close0);
double bar1 = MathAbs(open1-close1);
double bar2 = MathAbs(open2-close2);
if(bar0<bar1 && bar1<bar2)
momentum=true;
else
momentum=false;
}
//PUT
if(Histo<Histo && Histo<Histo && open0<close0 && open1<close1 && open2<close2 && momentum==true)
{
double high0 = iHigh(NULL, 0, i);
double high2 = iHigh(NULL, 0, i+2);
TrendCreate(DivergenceIndentifier+"Sub"+i,Time,Histo,Time,Histo,Red,STYLE_SOLID,1,IDWindow);
TrendCreate(DivergenceIndentifier+"Main"+i,Time,high2,Time,high0,Red,STYLE_SOLID,1,0);
}
else if(Histo>Histo && Histo>Histo && open0>close0 && open1>close1 && open2>close2 && momentum==true)
{
double low0 = iLow(NULL, 0, i);
double low2 = iLow(NULL, 0, i+2);
TrendCreate(DivergenceIndentifier+"Sub"+i,Time,Histo,Time,Histo,Red,STYLE_SOLID,1,IDWindow);
TrendCreate(DivergenceIndentifier+"Main"+i,Time,low2,Time,low0,Red,STYLE_SOLID,1,0);
}
}
}
return(0);
}
//+------------------------------------------------------------------+
void manageArrow(int i)
{
if(ShowArrows)
{
deleteArrow(Time);
if(trend ==-1) drawArrow(i,OverBoughtColor,159,false);
if(trend == 1) drawArrow(i,OverSoldColor ,159,true );
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void fnDeleteAllDivergence()
{
string lookFor=DivergenceIndentifier;
string objectName;
int lookForLength=StringLen(lookFor);
for(int i=ObjectsTotal()-1; i>=0; i--)
{
objectName=ObjectName(i);
if(StringSubstr(objectName,0,lookForLength)==lookFor) ObjectDelete(objectName);
}
}
//
//
//
//
//
void drawArrow(int i,color theColor,int theCode,bool up)
{
string name=arrowsIdentifier+":"+Time;
double gap=3.0*iATR(NULL,0,10,i)/4.0; //20
//
//
//
//
//
ObjectCreate(name,OBJ_ARROW,0,Time,0);
ObjectSet(name,OBJPROP_ARROWCODE,theCode);
ObjectSet(name,OBJPROP_COLOR,theColor);
ObjectSet(name,OBJPROP_WIDTH,arrowsWidth);
if(up)
ObjectSet(name,OBJPROP_PRICE1,High+gap);
else ObjectSet(name,OBJPROP_PRICE1,Low-gap);
}
//
//
//
//
//
void deleteArrows()
{
string lookFor = arrowsIdentifier+":";
int lookForLength = StringLen(lookFor);
for(int i=ObjectsTotal()-1; i>=0; i--)
{
string objectName=ObjectName(i);
if(StringSubstr(objectName,0,lookForLength)==lookFor) ObjectDelete(objectName);
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void deleteArrow(datetime time)
{
string lookFor=arrowsIdentifier+":"+time; ObjectDelete(lookFor);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//
//
//
//
//
bool TrendCreate(string name="Line1",
datetime time1=0, // first point time
double price1=0, // first point price
datetime time2=0, // second point time
double price2=0, // second point price
const color clr=clrRed, // line color
const ENUM_LINE_STYLE style=STYLE_SOLID, // line style
const int width=1,
const int window=0 // line width // highlight to move
)
{
//--- reset the error value
ResetLastError();
//--- create a trend line by the given coordinates
if(!ObjectCreate(name,OBJ_TREND,window,time1,price1,time2,price2))
{
Print(__FUNCTION__,": failed to create a trend line! Error code = ",GetLastError());
return(false);
}
//--- set line color
ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- set line display style
ObjectSetInteger(0,name,OBJPROP_STYLE,style);
//--- set line width
ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
//--- enable (true) or disable (false) the mode of continuation of the line's display to the right
ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
//--- successful execution
return(true);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CleanPoint(int i,double &first[],double &second[])
{
if((second!=EMPTY_VALUE) &&(second !=EMPTY_VALUE))
second=EMPTY_VALUE;
else
if((first!=EMPTY_VALUE) && (first!=EMPTY_VALUE) && (first==EMPTY_VALUE))
first=EMPTY_VALUE;
}
//
//
//
//
//
void PlotPoint(int i,double &first[],double &second[],double &from[])
{
if(first==EMPTY_VALUE)
{
if(first==EMPTY_VALUE)
{
first = from;
first = from;
second = EMPTY_VALUE;
}
else
{
second = from;
second = from;
first = EMPTY_VALUE;
}
}
else
{
first = from;
second = EMPTY_VALUE;
}
}
//+------------------------------------------------------------------+
//---
次の問題があります。私のインジケータは、現在のバーの値を変更しません。チャートをリフレッシュする必要があります。
このように試してみてください。
//| RSMA Histogram.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright "Tartut"
#property link ""
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Lime
#property indicator_minimum -35
#property indicator_maximum 35
#property indicator_level1 19
#property indicator_level2 -19
#property indicator_level3 0
//#property indicator_color2 Yellow
//#property indicator_color3 MediumOrchid
extern double OverSold=-19.0;
extern double OverBought=19.0;
extern int RSI_Period=9;
extern int RSI_Applied_Price=0;
extern int MA_Period=12;
extern int MA_Method=1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA
extern bool ShowArrows=true;
extern color OverSoldColor=Gold;
extern color OverBoughtColor = Gold;
extern string arrowsIdentifier = "RSMA arrows";
extern int arrowsWidth = 1;
extern int IDWindow=1;
extern string _Divergence="<>";
extern string _CBars="<>";
extern int CBars=99;
extern bool CheckDivergence=false;
extern bool CheckSlowDownMomentum=false;
extern string DivergenceIndentifier="RSMA Divergence";
double MA_Array[],RSI[],Histo[];
double trend[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(4);
//---- indicators setting
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
IndicatorShortName("RSMA Histogram");
SetIndexBuffer(0,Histo);
SetIndexLabel(0,"RSMA");
SetIndexBuffer(1,MA_Array);
SetIndexLabel(1,"MA("+MA_Period+")");
SetIndexBuffer(2,RSI);
SetIndexLabel(2,"RSI("+RSI_Period+")");
SetIndexBuffer(3,trend);
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int deinit()
{
deleteArrows();
fnDeleteAllDivergence();
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
//---- indicator calculation
Comment(limit);
for(int i=0; i<limit; i++)
{
RSI=iRSI(NULL,0,RSI_Period,RSI_Applied_Price,i);
}
for(i=0; i<limit; i++)
{
MA_Array=iMAOnArray(RSI,0,MA_Period,0,MA_Method,i);
}
for(i=0; i<limit; i++)
{
Histo=RSI-MA_Array;
if(Histo>OverBought)
trend=1;
else if(Histo<OverSold)
trend=-1;
manageArrow(i);
}
if(CheckDivergence==true)
{
int x= CBars/3;
for(i=0; i<x; i++)
{
double open0=iOpen(NULL,0,i);
double close0= iClose(NULL,0,i);
double open1 = iOpen(NULL,0,i+1);
double close1= iClose(NULL,0,i+1);
double open2 = iOpen(NULL,0,i+2);
double close2 = iClose(NULL, 0, i+2);
bool momentum = true;
if(CheckSlowDownMomentum==true)
{
double bar0 = MathAbs(open0-close0);
double bar1 = MathAbs(open1-close1);
double bar2 = MathAbs(open2-close2);
if(bar0<bar1 && bar1<bar2)
momentum=true;
else
momentum=false;
}
//PUT
if(Histo<Histo && Histo<Histo && open0<close0 && open1<close1 && open2<close2 && momentum==true)
{
double high0 = iHigh(NULL, 0, i);
double high2 = iHigh(NULL, 0, i+2);
TrendCreate(DivergenceIndentifier+"Sub"+i,Time,Histo,Time,Histo,Red,STYLE_SOLID,1,IDWindow);
TrendCreate(DivergenceIndentifier+"Main"+i,Time,high2,Time,high0,Red,STYLE_SOLID,1,0);
}
else if(Histo>Histo && Histo>Histo && open0>close0 && open1>close1 && open2>close2 && momentum==true)
{
double low0 = iLow(NULL, 0, i);
double low2 = iLow(NULL, 0, i+2);
TrendCreate(DivergenceIndentifier+"Sub"+i,Time,Histo,Time,Histo,Red,STYLE_SOLID,1,IDWindow);
TrendCreate(DivergenceIndentifier+"Main"+i,Time,low2,Time,low0,Red,STYLE_SOLID,1,0);
}
}
}
return(0);
}
//+------------------------------------------------------------------+
void manageArrow(int i)
{
if(ShowArrows)
{
deleteArrow(Time);
if(trend ==-1) drawArrow(i,OverBoughtColor,159,false);
if(trend == 1) drawArrow(i,OverSoldColor ,159,true );
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void fnDeleteAllDivergence()
{
string lookFor=DivergenceIndentifier;
string objectName;
int lookForLength=StringLen(lookFor);
for(int i=ObjectsTotal()-1; i>=0; i--)
{
objectName=ObjectName(i);
if(StringSubstr(objectName,0,lookForLength)==lookFor) ObjectDelete(objectName);
}
}
//
//
//
//
//
void drawArrow(int i,color theColor,int theCode,bool up)
{
string name=arrowsIdentifier+":"+Time;
double gap=3.0*iATR(NULL,0,10,i)/4.0; //20
//
//
//
//
//
ObjectCreate(name,OBJ_ARROW,0,Time,0);
ObjectSet(name,OBJPROP_ARROWCODE,theCode);
ObjectSet(name,OBJPROP_COLOR,theColor);
ObjectSet(name,OBJPROP_WIDTH,arrowsWidth);
if(up)
ObjectSet(name,OBJPROP_PRICE1,High+gap);
else ObjectSet(name,OBJPROP_PRICE1,Low-gap);
}
//
//
//
//
//
void deleteArrows()
{
string lookFor = arrowsIdentifier+":";
int lookForLength = StringLen(lookFor);
for(int i=ObjectsTotal()-1; i>=0; i--)
{
string objectName=ObjectName(i);
if(StringSubstr(objectName,0,lookForLength)==lookFor) ObjectDelete(objectName);
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void deleteArrow(datetime time)
{
string lookFor=arrowsIdentifier+":"+time; ObjectDelete(lookFor);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//
//
//
//
//
bool TrendCreate(string name="Line1",
datetime time1=0, // first point time
double price1=0, // first point price
datetime time2=0, // second point time
double price2=0, // second point price
const color clr=clrRed, // line color
const ENUM_LINE_STYLE style=STYLE_SOLID, // line style
const int width=1,
const int window=0 // line width // highlight to move
)
{
//--- reset the error value
ResetLastError();
//--- create a trend line by the given coordinates
if(!ObjectCreate(name,OBJ_TREND,window,time1,price1,time2,price2))
{
Print(__FUNCTION__,": failed to create a trend line! Error code = ",GetLastError());
return(false);
}
//--- set line color
ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- set line display style
ObjectSetInteger(0,name,OBJPROP_STYLE,style);
//--- set line width
ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
//--- enable (true) or disable (false) the mode of continuation of the line's display to the right
ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
//--- successful execution
return(true);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CleanPoint(int i,double &first[],double &second[])
{
if((second!=EMPTY_VALUE) &&(second !=EMPTY_VALUE))
second=EMPTY_VALUE;
else
if((first!=EMPTY_VALUE) && (first!=EMPTY_VALUE) && (first==EMPTY_VALUE))
first=EMPTY_VALUE;
}
//
//
//
//
//
void PlotPoint(int i,double &first[],double &second[],double &from[])
{
if(first==EMPTY_VALUE)
{
if(first==EMPTY_VALUE)
{
first = from;
first = from;
second = EMPTY_VALUE;
}
else
{
second = from;
second = from;
first = EMPTY_VALUE;
}
}
else
{
first = from;
second = EMPTY_VALUE;
}
}
//+------------------------------------------------------------------+
//---このように試してみてください。
You are the best ありがとうございます。
こんにちは、どなたかこのインジケーターを緑のアップしか表示されないので、赤いバーもダウンで表示されるように修正していただけませんか?よろしくお願いします。(Deltaforce Volume)
また、バーの太さを調整できるように修正していただけませんか?(Deltaforce)ありがとうございます。
こんにちは、MladenとMr.Tools
インジケータやEAでできるかもしれませんが、どうしても必要なのです。
私は半自動注文システムが必要です。つまり、私は最初の取引を手動で取得し、SLとTPで「成行注文」、SLがヒットした場合、システムはSLで反対方向に新しい注文を作成します(新しい注文はエントリ)、最初の取引のエントリは現在SLとPipで常に同じ値であり、私はセットアップで、何枚またはミニロットはマーチンゲイルの一種で、進行中の貿易に開かれるべきである、実際にはありませんが置きたいと思うのですが、手動。TPがヒットするまで、システムは新しい注文を作成する必要があります。TPがヒットすると、システムは停止するか閉じます。私は、私が説明で混乱を作成しなかったことを願っています!;-)
私が使用することができるこのような何かがありますか?
どうもありがとうございました。
ムラデンさん、ツールズさん、こんにちは
私は問題があり、これを行う方法がわからない、多分インジケータまたはEAで、しかし私は本当にそれが必要です、多分あなたは私を助けることができます。
私は半自動注文システムが必要です。つまり、私は最初の取引を手動で取得し、SLとTPで「成行注文」、SLがヒットした場合、システムはSLで反対方向に新しい注文を作成します(新しい注文はエントリです)、最初の取引のエントリは現在SLとPIPSで常に同じ値であり、私はセットアップで手動で置きたい、何枚またはミニロットはマーチンゲールの種類、しかし実際にはない進歩した取引で開かれるべきであるか?TPがヒットするまで、システムは新しい注文を作成する必要があります。TPがヒットすると、システムは停止するか閉じます。私は、私が説明で混乱を作成しなかったことを願っています!;-)
このような使い方ができるものがあるのでしょうか?
どうもありがとうございます。ラバックス
このルールはEAを作るには緩すぎるし、私の知る限りではそのようなEAはない。
このEAを見つけました、私が探していたものです...あなたはそれについてどう思いますか?
https://www.mql5.com/en/forum/184476