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

 

はい、3ステップにしたいです

15歩進んで10歩戻る

30秒後に15秒戻る

45ドルに到達して15ドル戻す

または、ストップロスで 決済する。

写真を撮って、もっとうまく説明できるようにします。

 
fosgate_r:
これは私にとって新しいものです。

だから、負けトレードの終了は、常にそれが右バウンスバックするまで待つ必要がありますか?

バウンスバックしない場合はどうなんでしょうか?

最初のSLでクローズするのでしょうか?

今までにありがとう、私はすでにそれを作った、今この損失保護で良い結果を得るために最適化しようとしています。

 

私は、例えばRSIインジケータのように、線をプロットするための情報を見つけようとしています...私は、同じインジケータに線としてプロットしたい2つの数字を持っています。

私はそれがある種の配列を含むことを知っているが、私はコードのグループがこれを実現するために見つけるのに苦労しています。

 

インジケーターバッファー

SPACECHIMP:
MQL4.comでは、MQL4.comを利用した様々なサービスを提供しています。

こちらの記事をご覧ください

初心者のためのMQL4言語。カスタム・インジケータ(パート1) - MQL4 Articles

 
smb1970:
こんにちは、皆さん。

ジョージ・スミスのForex Made-EZをご存知の方がいらっしゃるかどうかわかりません。

現在、彼の作品を見直しているのですが、彼が使っているオスカーオシレーターのインジケータをコード化した人がいるのでしょうか?

計算式は

A = 過去8本の最高値(この1本を含む)

B = 過去8本の安値(この1本を含む)

C = 現在のバーの終値

X = 前回のオシレータ値(オスカー)

今日のオシレーターは、(C-B)を(A-B)で割って100を掛けたものになります。

次に、この大まかな数値(Yと呼ぶ)を次のように「平滑化」します。

最終的なオシレータの数値 = ((X÷3) × 2) + (Y÷3).

もし、どなたかこれをコード化したことのある方、またはコード化できる方がいらっしゃいましたら、ぜひ教えてください。

スティーブ

私はこれを自分でコーディングしてみました。これが私が考えているようになるかどうか、どなたかコメントをお願いします。数値は、手動で計算した場合の数値と全く一致しないようです。また、インジケータを配置した時点からしか起動しません。過去の値も表示してほしいです。

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 レッド

//---- バッファ

double ExtMapBuffer1[]です。

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

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

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

int init()

{

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

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

SetIndexBuffer(0,ExtMapBuffer1)を設定します。

文字列short_name = "Oscar Indicator";

IndicatorShortName(short_name)。

//----

return(1);

}

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

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

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

int deinit()

{

return(0);

}

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

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

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

int start()

{

int counted_bars=IndicatorCounted();

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

if (counted_bars<0) return(-1);

//---- 最後にカウントされたバーが再カウントされる

if (counted_bars>0) counted_bars--;

int pos=Bars-counted_bars;

//---- メイン計算ループ

double x;

x=50;

while(pos>=0)

{

double a, b, c, y, osc;

//A=過去8本のバーの最高値(このバーを含む)

a=High

//let B = 過去8本のバーのうち最も低い安値(このバーを含む)

b=Low;

//let C = 現在のバーの終値

c = Close[pos];

//let X = 直前のオシレーターの数値 (オスカー)

//今日のオシレーターは、(C-B)を(A-B)の100倍で割った値です。

Y=((C-B)/(A-B))*100;

//次に、この大まかな数値(Yとします)を次のように「平滑化」します。

//最終的な振動子数=((X÷3)×2)+(Y÷3)。

osc=((x/3)*2)+(y/3)となります。

ExtMapBuffer1[pos]= osc ;

pos--;

}

return(0);

}

よろしくお願いします。

ありがとうございます。

 

聞く...MODE_TRADES

こんにちは、どなたかMODE_TRADESの使用例を教えていただけませんか?

ありがとうございます。

 

smb1970さんへ - これがそうです。

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

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

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Red

#property indicator_maximum 100

#property indicator_minimum 0

//

//

//

//

//

extern int OscPeriod = 8;

extern int OscPrice = PRICE_CLOSE;

double oscBuffer[];

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

//| |

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

//

//

//

//

//

int init()

{

SetIndexBuffer(0,oscBuffer);

IndicatorShortName("Osc ("+OscPeriod+")");

return(0);

}

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

int i,limit;

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//

//

//

//

//

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

{

double price = iMA(NULL,0,1,0,MODE_SMA,OscPrice,i);

double high = High[ArrayMaximum(High,OscPeriod,i)];

double low = Low[ArrayMinimum(Low,OscPeriod,i)];

//

//

//

//

//

if (high!=low)

double raw = 100.00*(price-low)/(high-low);

else raw = 0.00;

oscBuffer= oscBuffer*2.0/3.0 + raw/3.0;

}

return(0);

}

しかし、画像も見てください。上が "Oscar" 下が stochastic(8) の Ema(5) で、もっと簡単に言うと、下が Stochastic(8,5,1) でシグナルラインは exponential にセットされています。つまり、"Oscar" は、単純に stochastic のシグナルラインということになります。

ファイル:
oscar.gif  21 kb
 

ありがとうございます!(笑

mladenさん、ありがとうございます!とても便利なだけでなく、とてもわかりやすいですね。

 

新米がコーディングでお困りです :-)

こんにちは、皆さん。

私はここにいくつかの異種の助けを必要としている 。 私は、異なる指標間の一致を探すいくつかのコードを持っています。 今のところ、1回目の「買い」の取引はできますが、1回だけの取引はできません...最大8回の取引をエントリーしています。 そして、相場が不利になると、不利になったにもかかわらず、再度売買を行う「コンティンジェンシー・トレード」をエントリーしています。 どなたか、正しいコードがどのようなものであるかを教えていただけると大変 助かります。

これらの画像が表示されるかどうかわからないが、念のため私も添付ファイルとして持っている。

以下は、取引を実行することになっている私の欠陥のあるコードです...

while (execute_trade ==5)

{if ( OrdersTotal() == buy_trade1 ) //buy_trade1 = 1...this stopped it after one order have been placed... but doesn't work yet

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point).execute_trade=0;;。

execute_trade=0;

if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))

Print("私のチケットは: " , ticket);

{

buy1 = OrderOpenPrice(); //1番目の注文の価格をこの変数に取り込む

// Comment("order #1open price is ", OrderOpenPrice() + " + buy1 + " less than " + (buy1-0.0030));

if (buy1>=(buy1-0.0030))。

{

//if ( OrdersTotal() <= buy_trade1 ) //1つ注文を出したら停止する。

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point)。

//execute_trade=0。

}

} else

Print("OrderSelectは",GetLastError())のエラーを返しました。

}

 

新米がコーディングで困っています

こんにちは、皆さん。

私はここでいくつかの異種の助けを必要としています。私は、異なる指標間の一致を探すいくつかのコードを持っています。このような場合、どのようにすればよいのでしょうか?今のところ1回目の "買い "の取引はできますが、1回の取引だけでなく、最大8回の取引をエントリーしています。そして、相場が不利になると、不利になったにもかかわらず、再度売買を行う「コンティンジェンシー・トレード」をエントリーしています。どなたか、正しいコードがどのようなものであるかを教えていただけると大変助かります。

これらの画像が表示されるかどうかはわかりませんが、念のため、私はまた、添付ファイルとしてそれらを持っています。

画像1

写真2

以下は、取引を実行することになっている私の欠陥のあるコードです...

while (execute_trade ==5)

{if ( OrdersTotal() == buy_trade1 ) //buy_trade1 = 1...this stops it after one order have been placed... but doesn't work yet

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point)とする。

execute_trade=0;

if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))

Print("私のチケットは: " , ticket);

{

buy1 = OrderOpenPrice(); //1番目の注文の価格をこの変数に取り込む

// Comment("order #1open price is ", OrderOpenPrice() + " + buy1 + " less than " + (buy1-0.0030));

if (buy1>=(buy1-0.0030))。

{

//if ( OrdersTotal() <= buy_trade1 ) //1つ注文を出したら停止する。

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point)とする。

//execute_trade=0。

}

}

その他

Print("OrderSelectは",GetLastError())のエラーを返しました。

}

ファイル: