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

 

インジケーターからデータ型を復元する

こんにちは

インジケータ(3MA Cross w alert)からデータ型を復元してEAに入れることは可能でしょうか?

これは私がやりたいことです。

インジケータ(3 MA Cross w alert)で、私はデータ型を置いた。

double execute_trade = "ok_buy" orexecute_trade = "ok_sell" here :

************Indicator ************

if ((速いMAnow > 遅いMAnow && 速いMAprevious <= 遅いMAprevious &&))

fasterMAprevious <= slowerMAprevious && (より速いMAprevious > slowerMAprevious &&)

fasterMAafter > slowerMAafter && (中間のMAnow > 遅いMAnow)

mediumMAnow > slowerMAnow )

||

(fasterMAnow > slowerMAnow && (mediumMAnow > slowerMAnow ) ||| (fasterMAnow > slowerMAnow && )

mediumMAnow > slowerMAnow && (中間のMAnow > 遅いMAnow &&)

mediumMAprevious <= slowerMAprevious && (中間のMAprevious <=遅いMAprevious &&)

mediumMAafter > slowerMAafter ))

{

CrossUp = Low - Range*0.5;

文字列 execute_trade = "ok_buy";

}

if ((速いMAnow < 遅いMAnow && 速いMAprevious >= 遅いMAprevious &&))

fasterMAprevious >= slowerMAprevious && (速いMAnow <遅いMAnow &&)

fasterMAafter < slowerMAafter && (速いMAafter < 遅いMAafter &&)

mediumMAnow < slowerMAnow )

||

(より速いMAnow < より遅いMAnow &&)

中位MAnow < 遅いMAnow && (速いMAnow < 遅いMAnow && 中位MAnow &&)

mediumMAprevious >= slowerMAprevious && (より速いMAnow < slowerMAnow &&)

mediumMAafter < slowerMAafter ))

{

CrossDown = High + Range*0.5;

execute_trade = "ok_sell";

}

************************

というように、EAでexcute_tradeを回復させたいのですが。

***********EA***************

if (excute_trade== "ok_buy")

注文 = SIGNAL_BUY;

if (excute_trade=="ok_sell")注文 = SIGNAL_SELL?

注文 = SIGNAL_SELL。

****************************

しかし、私はどのように行うのかわからない

ヘルプをお願いします。

よろしくお願いします。

ファイル:
 
Julia:
どなたか親切な方、以下のコードの書き方を教えていただけませんか?

M30チャートでEaを回した場合、次のようなコードにしたいのです。

if(on the M5 timeframe, today's close is >yesterday's close)

{

.........

}

今日の終値は現在のBIDです。昨日の終値はタイムフレームに依存しないので、M30やM5タイムフレームは関係ありません。

if(Bid > iClose(NULL,PERIOD_D1,1))

{

...

}

 
natsirte:
ハイ

インジケータ(3MAクロスwアラート)からデータ型を復元してEAに入れることは可能でしょうか?

これは私がやりたいことです。

インジケータ(3 MA Cross w alert)で、私はデータ型を置いた。

double execute_trade = "ok_buy" orexecute_trade = "ok_sell" here :

************Indicator ************

if ((速いMAnow > 遅いMAnow && 速いMAprevious <= 遅いMAprevious &&))

fasterMAprevious <= slowerMAprevious && (より速いMAprevious > slowerMAprevious &&)

fasterMAafter > slowerMAafter && (中間のMAnow > 遅いMAnow)

mediumMAnow > slowerMAnow )

||

(fasterMAnow > slowerMAnow && (mediumMAnow > slowerMAnow ) ||| (fasterMAnow > slowerMAnow && )

mediumMAnow > slowerMAnow && (中間のMAnow > 遅いMAnow &&)

mediumMAprevious <= slowerMAprevious && (中間のMAprevious <=遅いMAprevious &&)

mediumMAafter > slowerMAafter ))

{

CrossUp = Low - Range*0.5;

文字列 execute_trade = "ok_buy";

}

if ((速いMAnow < 遅いMAnow && 速いMAprevious >= 遅いMAprevious &&))

fasterMAprevious >= slowerMAprevious && (速いMAnow <遅いMAnow &&)

fasterMAafter < slowerMAafter && (速いMAafter < 遅いMAafter &&)

mediumMAnow < slowerMAnow )

||

(より速いMAnow < より遅いMAnow &&)

中位MAnow < 遅いMAnow && (速いMAnow < 遅いMAnow && 中位MAnow &&)

mediumMAprevious >= slowerMAprevious && (より速いMAnow < slowerMAnow &&)

mediumMAafter < slowerMAafter ))

{

CrossDown = High + Range*0.5;

execute_trade = "ok_sell";

}

************************

というように、EAでexcute_tradeを回復させたいのですが。

***********EA***************

if (excute_trade== "ok_buy")

注文 = SIGNAL_BUY;

if (excute_trade=="ok_sell")注文 = SIGNAL_SELL?

注文 = SIGNAL_SELL。

****************************

しかし、私はどのように行うのか分からない

ヘルプお願いします

よろしくお願いします。

バッファ(つまり矢印)の値を取得するためにiCustom 関数を使用する必要があります。

double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)

指定されたカスタムインディケータを計算し、その値を返します。カスタムインジケーターはコンパイル済み(*.EX4ファイル)で、terminal_directoryのindicatorsディレクトリに存在する必要があります。

パラメータは以下の通りです。

symbol - インジケータを計算するために使用されるシンボル。NULLは現在のシンボルを意味します。

timeframe - 時間枠。Timeframe列挙値のいずれかを指定します。0は、現在のチャートタイムフレームを意味します。

name - カスタムインジケーターコンパイルされたプログラム名。

... - パラメータセット(必要な場合)。渡されたパラメータとその順序は、カスタムインジケータの宣言順序と外部変数の型に対応しなければなりません。

mode - ラインインデックス。0 から 7 までの値で, SetIndexBuffer 関数のいずれかで利用されたインデックスと一致しなければなりません.

shift - インジケータバッファから取得した値のインデックス(現在のバーから指定された期間分前に相対的にシフトします)。

サンプル

サンプル: double val=iCustom(NULL, 0, "SampleInd",13,1,0);

あなたの場合、構文は次のようになります。

if(iCustom(NULL, 0, "3 MA Cross w_Alert v2", p1, , , , p10, 0, 0) > 0) // Buy

{

...

}

if(iCustom(NULL, 0, "3 MA Cross w_Alert v2", p1, , , , p10, 1, 0) > 0) // Sell

{

...

}

p1~p10は、外部パラメータとしてインジケータに送信する値です。例えば、p1 は FasterMA に、p2 は FasterShift に、そして最後の宣言 p10 SoundAlert まで割り当てられる値ということです。これらの順番と意味は、インジケーターのコードを参照してください。

 

Michelさん、ありがとうございます。

しかし、そのコードがインジケーターコードの中にある場合はどうでしょうか?

そうなんですか。

if(Close[pos]>iHigh(Symbol(),PERIOD_M5,[pos+1])?????????????????????????????????????????.

 
Beno:
Gidday 私はゆっくりと私のEAのいくつかのエラーを修正しています(そして途中で多くのことを学びます)しかし、これは何を意味するのでしょうか。

2007.10.24 21:22:24 1998.11.20 06:00 The Abyss GBPJPY,Daily:OrderSend関数のパラメータ6として無効なdouble数が あります。

このエラーについて何も書かれていないのですが、何を見ればいいのでしょうか?

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

ご覧の通り、パラメータ 6はストップロスです。ストップロスがint型であることを確認してください。次に、OrderSend()コマンドで、ストップロスにポイントを掛けていることを確認します。これは、取引する通貨に適した倍率に変換されます。

ロングの場合の例

ticketa=OrderSend(Symbol(),OP_BUY,lotsize,Ask,slip,Ask-intStopLoss*Point,Ask+intTakeProfit*Point, "Comment",magic,0,Green) と入力します。

短い場合の例

ticketb=OrderSend(Symbol(),OP_SELL,lotize,Bid,slip,Bid+intStopLoss*Point,Bid-intTakeProfit*Point,「コメント」, magic,0,Blue) です。

これが役立つことを願っています。

 

ありがとうウルフ

それはとても役に立ちましたが、新しい問題を開いてしまいました(笑) 今は買いますが、売りません。まあ正しい場所ではないですね。このような場合、「某有名企業」と「某有名企業」の2社に依頼することになります。

ってなわけで、"The Abyss "っていうEAにふさわしい名前を選んだと思う。笑

2007.11.24 10:14:44 2007.11.23 12:00 The Abyss EURUSD,H4: Error openingSELL order: 0

void CheckForSignals() { (シグナルをチェックする)

double TML=iCustom(NULL,0, "TrendManager",TM_Period,TM_Shift,0,shift);

double TMS=iCustom(NULL,0, "TrendManager",TM_Period,TM_Shift,1,shift); double TMS=iCustom(NULL,0, "TrendManager",TM_Period,TM_Shift,1,shift);

double hasOpenLong=iCustom(NULL,0, "Heiken_Ashi_Smoothed",MaMetod,MaPeriod,MaPeriod2,1,shift) ;

double hasCloseLong=iCustom(NULL,0, "Heiken_Ashi_Smoothed",MaMetod,MaPeriod,MaPeriod2,3,shift) ;

double hasOpenShort=iCustom(NULL,0, "Heiken_Ashi_Smoothed",MaMetod,MaPeriod,MaPeriod2,0,shift) ;

double hasCloseShort=iCustom(NULL,0, "Heiken_Ashi_Smoothed",MaMetod,MaPeriod,MaPeriod2,2,shift) ;

double SDLL=iCustom(NULL,0, "Slope Direction Line",Period,Method,Price,0,shift);

double SDLS=iCustom(NULL,0, "Slope Direction Line", period,method,price,1,shift); double SDLS=iCustom(NULL,0, "Slope Direction Line", period,method,price,1,shift);

buysig=false。

sellsig=false;

closebuy=false;

closesell=false。

bool Long1 = TML;

bool Short1 = TMS;

bool Long2 = SDLL;

bool Short2 = SDLS;

bool Long3 = hasOpenLong > hasCloseLong;

bool Short3 = hasOpenShort < hasCloseShort;

buysig = Long1 && Long2 && Long3;

sellsig = Short1 && Short2 && Short3;

closebuy=sellsig;

closesell=buysig;

}

void CheckForOpen() {

if (last==Time[0])リターン。

int res,ord;

ダブルエントリー,ストップ

ord=CalculateCurrentOrders()。

if (ord!=0) CheckForClose();

//---- 買いの条件

if (buys< buysig) { (買い)

res=OpenAtMarket(OP_BUY,Lots)。

if (res<0) Print("Error opening BUY order :",(GetLastError()));

else last=Time[0];

//---- 売り条件

if (sells< sellsig) {

res=OpenAtMarket(OP_SELL,Lots)。

if (res<=0) Print("Error opening SELL order :",(GetLastError()));

else last=Time[0];

}

}

int OpenAtMarket(int mode,double lot) { {

int tr,col;

double openprice;

tr=0; while (tr<5 && IsTradeAllowed()) { tr++; Sleep(2000); }.

RefreshRates();

if (モード==OP_SELL) {。

openprice=Bid;

col=Red;

} else {

//openprice=nd(Ask)。

openprice=Ask;

col=Blue;

}

OrderSend(Symbol(),mode,lot,openprice,slippage,sl,tp,EAName+Magic,Magic,0,col).を送信します。

}

を返します。

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

//|寄り付き注文の条件チェック||etc.

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

void CheckForClose() {

int total;

//----

total=OrdersTotal();

for(int i=total;i>=0;i--)

{

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

if(OrderMagicNumber()!=Magic || OrderSymbol()!=Symbol()) continue; { if(OrderMagicNumber()!=Magic || OrderSymbol()!=Symbol()) continue;

//---- オーダータイプのチェック

if(OrderType()==OP_BUY && closebuy) CloseAtMarket(OrderTicket(),OrderLots());

if(OrderType()==OP_SELL && closesell) CloseAtMarket(OrderTicket(),OrderLots())。

}

}

bool CloseAtMarket(int ticket,double lot) {

bool bres=false; int tr;

tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(2000); }.

RefreshRates();

bres=OrderClose(ticket,lot,OrderClosePrice(),slippage,White)。

if (!bres) Print("Error closing order :",(GetLastError()))となります。

}

 
Julia:
ありがとう、Michel。

しかし、そのコードがインジケーターコードの中にある場合はどうでしょうか?

そうなのでしょうか。

if(Close[pos]>iHigh(Symbol(),PERIOD_M5,[pos+1])???????????????????????????.

そうかもしれませんね。

 

ヘルプPlz - Mq4にこれらを変換する - ありがとうございました。

親愛なる皆さん。

私はそれが非常に良いと思うシステムを構築している、私は3ヶ月のために前にアイデアをテストし、今私は、我々はそれをテストすることができますので、フォーラムでできるだけ早くされ、それは本当に私が思うに良いお金を稼ぐでしょう、インジケータを符号化しようとしています。

Plzは、MQL4コーディングにこれらの行を変換するために、今のところ私を助ける。

1- I have vairable X , this will have a value and I'm calculating it now.

Xを整数として持っています。

2- インジケータは、現在のGMT時間をチェック する必要があります、それは6:00am GMTでなければなりません - タイムフレーム1 H

-- GMT時間6:00amをチェックし、このキャンドルが閉じたら、このキャンドルの次の変数を計算する必要があります。

高 - 低 = A

A / 2 = B

B - ハイ= C = SL

D = X * 30パーセント

買い_エントリー= D + C

買いターゲット= C + (X * 60%)

売りエントリー= C - D

売り _Target= C - (X * 60%)

次に

チャート上に、買いは緑、売りは赤のラインで表示させたい。

これらは、GMT 6:00のキャンドルが終了すると同時に自動的に表示されなければならない。タイムフレーム1H、したがって、計算は6:00から6:59am GMTキャンドルハイとローに従わなければならない。

PLZはMQL4にこれを変える、従って私はそれをテストし、結果をpuplishに再度得ることができる

感謝たくさん

 
Beno:
ありがとう、Wolfe

それはとても役に立ちましたが、新しい問題を開いてしまいました(笑) 今は買いますが、売りはしませんまあ正しい場所ではないですね。このような場合、「某社」のように「某社」のように「某社」のように「某社」のように「某社」のように「某社」のように「某社」のように「某社」のように「某社」のように「某社」のように「某社」がある。

私は、このEAに "The Abyss "という正しい名前を選んだと思います。笑

って感じです。 EAで色を変えるインジケータを使うのはあまり良い経験ではありません。 インジケータを取り付けたデータウィンドウを開き、各色に対してどのような数値が返されるかを調べてみてください。 また、正しいタイミングで正しいインジケーターバッファを呼び出していることを確認してください。(もし本当に助けが必要なら、EA全体を投稿すれば、より良い助けを得られるかもしれません。 また、個人的には、2つの別々のOrdersend()関数、1つはショート専用、もう1つはロング専用でコード化します。 これは私の意見ですが、その方が分かりやすいと思います。

がんばってください。

 

ウルフに乾杯

2つのオーダーステップオプションを試してみるつもりですが、どうなるでしょうか。