コーディングの方法は? - ページ 291

 

ラストキャンドル詳細

こんにちは。

最後のローソクの高値、安値、始値、終値を表示するインジケータが欲しいのですが...

 
mladen:
なぜトレーリングストップを使わないのですか?というのは、あなたのオリジナルのアイデアのほぼ100%(ほとんど)を行うことができ、それははるかに、はるかに簡単にコード化することです。

問題は、(私の表現が正しいか、100%正しいとは思いませんが)ストップは(今のところ)取引全体を通して同じままです。このようなアプローチはどうでしょうか。2つのトレードが開いているとき、コードはオープンオーダーの数をチェックし、それが1以上(基本的には2)であれば、両方のトレードの利食い 額を以前より高い一定額に修正することができるのです。基本的には、ある種のヘッジがここで行われます。

ありがとうございます。

madmax3

 

[langtitle=pl]EAが開発したプロトタイプ[/langtitle]。

[lang=pl]このようなバグが発生した場合は、次のように対処してください: LevelRSIbuy=20を設定し、LevelRSIsell=80を設定する。

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESELL 4

#property copyright "Expert Advisor Builder" (エキスパートアドバイザービルダー)

#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = True;

extern double Lots = 0.1;

extern int Slippage = 1;

extern bool UseStopLoss = True;

extern int StopLoss = 10;

extern bool UseTakeProfit = True;

extern int TakeProfit = 5;

extern bool UseTrailingStop = False; extern int TakeProfit = 5; extern bool UseTrailingStop = False;

extern int TrailingStop = 30;

外付けの int LevelRSIbuy=20;

extern int LevelRSIsell=80;

int BarCount;

int Current;

bool TickCheck = False;

//+------------------------------------------------------------------+

//| エキスパート初期化関数

//+------------------------------------------------------------------+

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

//+------------------------------------------------------------------+

//| エキスパート初期化関数

//+------------------------------------------------------------------+

int deinit() {

return(0);

}

//+------------------------------------------------------------------+

//| エキスパートスタート機能

//+------------------------------------------------------------------+

int start() {

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

オーダー = SIGNAL_NONE;

//+------------------------------------------------------------------+

//| 変数開始

//+------------------------------------------------------------------+

double Var1 = iRSI("EURUSD", PERIOD_M1, 14, PRICE_OPEN, Current + 0);

double Buy1_1 = iRSI("EURUSD", PERIOD_M1, 14, PRICE_OPEN, Current + 0); double Var1 = iRSI("EURUSD", PERIOD_M1, 14, PRICE_OPEN, Current + 0);

double Sell1_1 = iRSI("EURUSD", PERIOD_M1, 14, PRICE_OPEN, Current + 0); double Buy1_1 = iRSI("EURUSD", PERIOD_M1, 14, PRICE_OPEN, Current + 0);

//+------------------------------------------------------------------+

//| 変数終了

//+------------------------------------------------------------------+

//ポジションチェック

bool IsTrade = False;

for (int i = 0; i < トータル; i ++) { { {オーダーセレクト(i, SELECT_BY_PASS)

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType() <= OP_SELL && OrderSymbol() == Symbol())) { IsTrade = True?

IsTrade = Trueです。

if(OrderType() == OP_BUY){

//Close

//+------------------------------------------------------------------+

//| シグナル開始(買い終了)

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| シグナル終了(買い終了)

//+------------------------------------------------------------------+

if (オーダー == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)) )){

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy").If(EachTickMode):シグナルを送信します。

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

を続けます。

}

//トレーリングストップ

if(UseTrailingStop && TrailingStop > 0) { /トレイリングストップ

if(ビッド - 注文開始価格() > ポイント * TrailingStop) { {

if(OrderStopLoss() < ビッド - ポイント * トレイリングストップ) { { {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen)を実行します。

if (!EachTickMode) BarCount = Bars;

を続けます。

}

}

}

} else {

//Close

//+------------------------------------------------------------------+

//| シグナル開始(売り終了)

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| シグナル終了(売り終了)

//+------------------------------------------------------------------+

if (オーダー == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))){

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell").If(EachTickMode):シグナルを送信します。

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

を続けます。

}

//トレーリングストップ

if(UseTrailingStop && TrailingStop > 0) { /トレーリングストップ

if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) { { {

if((OrderStopLoss() > (Ask + Point * TrailingStop))|| (OrderStopLoss() == 0)) { {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange)を実行します。

if (!EachTickMode) BarCount = Bars;

を続けます。

}

}

}

}

}

}

//+------------------------------------------------------------------+

//| Signal Begin(Entry)シグナル

//+------------------------------------------------------------------+

if (False) 注文 = SIGNAL_BUY;

if (False) Order = SIGNAL_SELL;

//+------------------------------------------------------------------+

//| シグナル終了

//+------------------------------------------------------------------+

//買い

if (オーダー == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))){

if(!IsTrade){。

//フリーマージンチェック

if (アカウントフリーマージン() < (1000 * ロット)) {

Print("資金がありません。フリーマージン = ", AccountFreeMargin());

return(0);

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0.です。

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue)。

if(チケット > 0) {

if (オーダーセレクト(チケット、SELECT_BY_TICKET、MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy")。

} else {

Print("買い注文の開始エラー :", GetLastError());

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

//売り

if (注文 == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))。{

if(!IsTrade){。

//フリーマージンチェック

if (アカウントフリーマージン() < (1000 * ロット)) {

Print("資金がありません。フリーマージン = ", AccountFreeMargin());

return(0);

if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0.です。

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink)。

if(チケット > 0) {

if (オーダーセレクト(チケット, SELECT_BY_TICKET, MODE_TRADES)) {

Print("SELL order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");

} else {

Print("Error opening SELL order :", GetLastError());

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

if (!EachTickMode) BarCount = Bars; return(0) } } if (!EachTickMode) BarCount = Bars;

return(0);

//+------------------------------------------------------------------+[/lang]

 

このコードを使って、オープントレードのテイクプロフィットを 増やそうとしています(オープントレードが2つある場合)。

if(total>2)

if(OrderType()==OP_BUY)

OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Ask+((TakeProfit+20)*Point),0,Blue);

if(OrderType()==OP_SELL)

OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Ask+((TakeProfit+20)*Point),0,Blue);

total=OrdersTotal(); とします。

しかし、私はまだそれを動作させることができません、何か提案はありますか?

ありがとうございます。

madmax3

 

1日の取引回数を1回に制限するヘルプ

私はプログラミングの初心者で、MQL4で助けが必要です。私はいくつかのコーダーガイドを勉強し、私の取引戦略に基づいて取引を開始および終了する方法を理解しました。私は1日に1回しか取引を行わないようにしたいと思っています(サーバー時間による)。そこで、オープンオーダーとクローズドオーダーをチェックして、今日オーダーがオープンされたかどうかを確認したいと思います。もし、今日注文が開かれたのであれば、その日の追加注文は開けないようにします。

よろしくお願いします。

 
このようなことを試してみてください。
bool uniqueOnDay()

{

datetime startTime = iTime(NULL,PERIOD_D1,Time[0]);

datetime endTime = startTime+24*60*PERIOD_D1;

for (int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;

if (OrderSymbol() != Symbol()) continue;

if (OrderMagicNumber() != MagicNumber) continue;

if (OrderOpenTime()endTime) continue;

return(false);

}

return(true);

}
現在のシンボルのクローズドオーダーのうち、当日にオープンされたものがあるかどうかをチェックします。もしその日に注文が開設されていれば、false を返し(その日にすでに注文が開設されている)、そうでなければ true を返します(その日に注文が開設されていない)。現在開いている注文はチェックしない(履歴だけ)。なぜなら、1つ以上の注文を開きたいとは思わないだろうし、それは別の方法でチェックされるからだ。使い方は次のようなものです。

if (UniqueOnDay() && CurrentlyOpenedOrders==0) ...

PS: これは、あなたのEAがMagicNumberパラメータ(その正確な名前)を持っていると仮定しています。

追記:これは日足までの時間枠で動作します。週足や月足チャートではうまくいきません。

dresolo1:
私はプログラミング初心者で、MQL4で助けを必要としています。いくつかのコーダーガイドを勉強し、私の取引戦略に基づいて取引を開始し、終了する方法を考え出しました。私は1日に1回しか取引を行わないようにしたいのです(サーバー時間による)。そこで、オープンオーダーとクローズドオーダーをチェックして、今日オーダーがオープンされたかどうかを確認したいと思います。もし、今日注文が開かれたのであれば、その日の追加注文は開けないようにします。助けてください。
 

[langtitle=pl]関数 TemaをTema(close,period)に変換する[/langtitle]

Witam

Jeszcze raz bo cos siere zle wkleilo.Jak przekazac wartosc funkcji Tema do Var1.Jak robie tak jak w kodzie ponizej to Var1 jest puste.

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 DarkBlue

#property indicator_width1 2

//---- input parameters

extern int EMA_period=4;

//---- buffers

string txt;

double TemaBuffer[];

double Ema[];

double EmaOfEma[];

double EmaOfEmaOfEma[];

double Var1;

int Var2;

int i,limit,limit2,limit3;

extern int Apply_To_Price=1;

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

//---- indicators

IndicatorBuffers(5);

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,Var1);

SetIndexBuffer(1,TemaBuffer);

SetIndexBuffer(2,Ema);

SetIndexBuffer(3,EmaOfEma);

SetIndexBuffer(4,EmaOfEmaOfEma);

IndicatorShortName("TEMA("+EMA_period+")");

switch(Apply_To_Price)

{

case 1:

{txt="Open";break;}

case 2:

{txt="High";break;}

case 3:

{txt="Low"; break;}

case 4:

{txt="Median"; break;}

case 5:

{txt="Typical"; break;}

case 6:

{txt="WghtdClose"; break;}

default:

{txt="Close";}

}

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

//----

int counted_bars=IndicatorCounted();

if (counted_bars==0)

{

limit=Bars-1;

limit2=limit-EMA_period;

limit3=limit2-EMA_period;

}

if (counted_bars>0)

{

limit=Bars-counted_bars-1;

limit2=limit;

limit3=limit2;

}

for (i=limit3;i>=0;i--)

{

Var1 = Tema(Apply_To_Price,4); //=======================TUTAJ JEST PROBLEM W VAR1 NIC NIE MA. DLACZEGO?

// Alert(Var1);

}

Var2 = dodawanie (2,3);

return(0);

}

double Tema(int Cena, int cykl)

{

//----

for (i=limit;i>=0;i--) Ema=iMA(NULL,0,cykl,0,MODE_EMA,Cena,i);

for (i=limit2;i>=0;i--) EmaOfEma=iMAOnArray(Ema,0,cykl,0,MODE_EMA,i);

for (i=limit3;i>=0;i--) EmaOfEmaOfEma=iMAOnArray(EmaOfEma,0,cykl,0,MODE_EMA,i);

for (i=limit3;i>=0;i--)

{

TemaBuffer=3*Ema-3*EmaOfEma+EmaOfEmaOfEma;

//Alert(TemaBuffer);

}

return(TemaBuffer);

}

int dodawanie (int a, int b)

{

int c;

c=a+b;

return(c);

}

 

こんな感じ(TEMA).

もし関数の ようにしたいのであれば、次のようにします。
double workTema[][3];

#define _ema1 0

#define _ema2 1

#define _ema3 2

double iTema(double price, double period, int r, int instanceNo=0)

{

if (ArrayRange(workTema,0)!= Bars) ArrayResize(workTema,Bars); instanceNo*=3; r = Bars-r-1;

//

//

//

//

//

double alpha = 2.0 / (1.0+period);

workTema[r][_ema1+instanceNo] = workTema[r-1][_ema1+instanceNo]+alpha*(price -workTema[r-1][_ema1+instanceNo]);

workTema[r][_ema2+instanceNo] = workTema[r-1][_ema2+instanceNo]+alpha*(workTema[r][_ema1+instanceNo]-workTema[r-1][_ema2+instanceNo]);

workTema[r][_ema3+instanceNo] = workTema[r-1][_ema3+instanceNo]+alpha*(workTema[r][_ema2+instanceNo]-workTema[r-1][_ema3+instanceNo]);

return(workTema[r][_ema3+instanceNo]+3.0*(workTema[r][_ema1+instanceNo]-workTema[r][_ema2+instanceNo]));

}[/PHP]

インジケータの例も添付しておきます。価格の代わりに値を渡す利点は、この方法で任意の値にテマを適用できることです(それは価格のテマである必要はありません、それは例えば、他の指標のテマであることができます)。

lukibest:
ウィタム

Jeszcze raz bo cos sie zle wkleilo.Jak przekazac wartosc funkcji Tema do Var1.Jak robie tak jak w kodzie ponizej to Var1 jest puste.

[PHP]

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 DarkBlue (インジケーターカラー1 ダークブルー)

#プロパティ indicator_width1 2

//---- 入力パラメータ

extern int EMA_period=4;

//---- バッファ

文字列 txt;

double TemaBuffer[];

double Ema[];

double EmaOfEma[];

double EmaOfEmaOfEma[]; double EmaOfEmaOfEma[];

double Var1;

int Var2;

int i,limit,limit2,limit3;

extern int Apply_To_Price=1;

//+------------------------------------------------------------------+

//| カスタムインジケータ初期化関数

//+------------------------------------------------------------------+

int init()

{

//---- インジケータ

IndicatorBuffers(5);

SetIndexStyle(0,DRAW_LINE)を設定します。

SetIndexBuffer(0,Var1);

SetIndexBuffer(1,TemaBuffer); SetIndexBuffer(1,TemaBuffer);

SetIndexBuffer(2,Ema)を設定します。

SetIndexBuffer(3,EmaOfEma)を設定します。

SetIndexBuffer(4,EmaOfEmaOfEma); SetIndexBuffer(4,EmaOfEma);

IndicatorShortName("TEMA("+EMA_period+")")。

スイッチ(Apply_To_Price)

{

ケース 1:

{txt="オープン";break;}。

ケース2

{txt="高値";break;}。

ケース3

{txt="安値";break;}。

ケース4

{txt="中央値"; break;}.

ケース5

{txt="標準"; break;}.

ケース6

{txt="WghtdClose";ブレーク;}。

デフォルトでは

{txt="閉じる";}。

//----

return(0);

//+------------------------------------------------------------------+

//| カスタムインジケータ初期化関数

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| カスタムインジケーターイテレーション関数

//+------------------------------------------------------------------+

int start()

{

//----

int counted_bars=IndicatorCounted();

if (counted_bars==0)

{

limit=Bars-1;

limit2=limit-EMA_period。

limit3=limit2-EMA_period。

if (counted_bars>0)

{

limit=Bars-counted_bars-1;

limit2=limit;

limit3=limit2。

}

for (i=limit3;i>=0;i--)

{

Var1 = Tema(Apply_To_Price,4); //=========================TUTAJ JEST PROBLEM W VAR1 NIC NIE MA.DLACZEGO?

// Alert(Var1);

}

Var2 = dodawanie (2,3);

return(0);

}

double Tema(int Cena, int cykl)

{

//----

for (i=limit;i>=0;i--) Ema=iMA(NULL,0,cykl,0,MODE_EMA,Cena,i)。

for (i=limit2;i>=0;i--) EmaOfEma=iMAOnArray(Ema,0,cykl,0,MODE_EMA,i)。

for (i=limit3;i>=0;i--) EmaOfEmaOfEma=iMAOnArray(EmaOfEma,0,cykl,0,MODE_EMA,i).FOR(i=制限3;i>=0;i>)

for (i=limit3;i>=0;i--)

{

TemaBuffer=3*Ema-3*EmaOfEma+EmaOfEma;

//Alert(TemaBuffer);

}

return(TemaBuffer);

int dodawanie (int a, int b)

{

int c;

c=a+b;

return(c);

}

ファイル:
tema.mq4  3 kb
 

HAMMERコードのヘルプをお願いします

こんにちは。

私はmql4で新しく始めています。 以下のインジケータを使ってローソク足で黒と白のハンマーを選ぼうとしています。 しかし、チャート上で時々ローソク足が間違った識別テキストを取得します(白いハンマーキャンドルは黒いハンマーキャンドルとして識別され、その逆も同様です)。 このような場合、どうしたらよいでしょうか。

#property indicator_chart_window

int limit;

//---- バッファ

文字列ハンマー[200000];

//+------------------------------------------------------------------+

//|CuStom インジケータ 初期化関数

//+------------------------------------------------------------------+

int init()

{

return(0);

}

//+------------------------------------------------------------------+

//| CuStorインジケータの初期化関数です。

//+------------------------------------------------------------------+

int deinit()

{

//----

ObjectsDeleteAll(hammer,OBJ_TEXT)を実行。

//----

return(0);

}

//+------------------------------------------------------------------+

//| CuStomインジケータ反復関数|CuStomインジケータ反復関数

//+------------------------------------------------------------------+

int start()

{

int N

int N1;

int N2;

文字列のテキスト

int counted_bars=IndicatorCounted();

limit=Bars-counted_bars;

for(N = 1; N < limit; N++) {

hammer[N]= CharToStr(N);

N1 = N + 1;

N2 = N + 2;

//----

//---- エラーの可能性をチェックする

if(counted_bars<0)の場合{。

Alert("NO Bars...");

return(-1);

}

// ハンマーのチェック 白

if (((Close[N1]>Open[N1]) && ((Open[N1]-Low[N1])>=2*(Close[N1]-Open[N1])) && ((High[N1]-Close[N1])<=(Open[N1]-Low[N1])*0.10)) )){

ObjectCreate(hammer[N], OBJ_TEXT, 0, Time[N1], Low[N1] - Point);

ObjectSetText(hammer[N], "WHmr", 9, "Times New Roman", LawnGreen);

}

// ハンマーブラックのチェック

if (((Close[N1]=2*(Open[N1]-Close[N1])) && ((High[N1]-Open[N1])<=(Close[N1]-Low[N1])*0.10))){

ObjectCreate(hammer[N], OBJ_TEXT, 0, Time[N1], Low[N1] - Point);

ObjectSetText(hammer[N], "BHmr", 9, "Times New Roman", LawnGreen);

}

//----

}// ループの終了

return(0);

//+------------------------------------------------------------------+

 
svezir:
こんにちは。

mql4で新しく始めています。 以下のインジケータを使ってローソク足で黒と白のハンマーを選ぼうとしています。 しかし、チャート上で時々ローソク足が間違った識別テキストを取得します(白いハンマーキャンドルは黒いハンマーキャンドルとして識別され、逆も同様です)。 このような場合、どうしたらよいでしょうか。

#property indicator_chart_window

int limit;

//---- バッファ

文字列ハンマー[200000];

//+------------------------------------------------------------------+

//| CuStom インジケータ初期化関数

//+------------------------------------------------------------------+

int init()

{

return(0);

}

//+------------------------------------------------------------------+

//| CuStorインジケータの初期化関数です。

//+------------------------------------------------------------------+

int deinit()

{

//----

ObjectsDeleteAll(hammer,OBJ_TEXT)を実行。

//----

return(0);

}

//+------------------------------------------------------------------+

//| CuStomインジケータ反復関数|CuStomインジケータ反復関数

//+------------------------------------------------------------------+

int start()

{

int N

int N1;

int N2;

文字列のテキスト

int counted_bars=IndicatorCounted();

limit=Bars-counted_bars;

for(N = 1; N < limit; N++) {

hammer[N]= CharToStr(N);

N1 = N + 1;

N2 = N + 2;

//----

//---- エラーの可能性をチェックする

if(counted_bars<0)の場合{。

Alert("NO Bars...");

return(-1);

}

// ハンマーのチェック 白

if (((Close[N1]>Open[N1]) && ((Open[N1]-Low[N1])>=2*(Close[N1]-Open[N1])) && ((High[N1]-Close[N1])<=(Open[N1]-Low[N1])*0.10)) )){

ObjectCreate(hammer[N], OBJ_TEXT, 0, Time[N1], Low[N1] - Point);

ObjectSetText(hammer[N], "WHmr", 9, "Times New Roman", LawnGreen);

}

// ハンマーブラックのチェック

if (((Close[N1]=2*(Open[N1]-Close[N1])) && ((High[N1]-Open[N1])<=(Close[N1]-Low[N1])*0.10))){

ObjectCreate(hammer[N], OBJ_TEXT, 0, Time[N1], Low[N1] - Point);

ObjectSetText(hammer[N], "BHmr", 9, "Times New Roman", LawnGreen);

}

//----

}// ループの終了

return(0);

}

//+------------------------------------------------------------------+

こんにちはSvezir。

キャンドルパターン用のこのインジケータは、多分役に立つでしょう。

ファイル: