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

 

...

コードのエラーではありません

ツール->ヒストリーセンターで、テストしたいシンボルの1分データを選んでダウンロードします(90%の精度で必要なのは1分データだけで、残りをダウンロードする必要はありません)。

Badguy:
こんにちはコーダー

私はまだMQL-Codeの最初のステップを学んでいるところです。

ジャーナルに以下のようなメッセージが表示されるのですが、なぜでしょうか?

Testgenerator:

unmatched data error ( Volume limit 159 at 2009.05.06 19 15 exceeded ) というメッセージが表示されます。

コードのどこを見ればいいのでしょうか?

ありがとうございます。
 
abundance:
私の友人と私はあるEAに取り組んでいます。ある段階で、それ(EA)はある時間、例えば17:00 EST...などで価格を読み取り、取得する必要があります。

どなたか先輩方、価格バーを逆算するのではなく、その方法をアドバイスしていただけませんか?もしかしたら、すでにそのための関数が書かれているかもしれません。親切に教えてください。ありがとうございました。

B rgds/abundance

iBarShift(...)は、チャート上のバーの 数を見つけるのに役立ち、その後、CloseまたはOpenを使用します。

 
Roger09:
iBarShift(...)は、チャート上のバーの数を見つけるのに役立ち、その後、CloseまたはOpenを使用します。

ロジャーさん、ありがとうございます。参考になりました。そして、もっとはっきりさせずに申し訳ありません。BidとAskの両方の価格が必要なのですがどのように入手すればよいのでしょうか?愚問でしたらご容赦ください。

B rgds/アバンダンス

 

データエラー

mladenさん、こんにちは。

迅速な対応ありがとうございます。

別のEAでテストしたところ問題なく動作したので、tickdataの問題ではないと思います。

Custom-Indicatorの問題だと思います。

フォローインディで作ってみます。オールアベレージ_v2.3

double ALL_AVERAGES_0 = iCustom(NULL,ALL_AVERA_TF, "AllAverages_v2.3",ALL_AVERA_PERIOD,ALL_AVERA_SHIFT,ALL_AVERA_METHOD,ALL_AVERA_PRICE,0).All_AVERA_V2.0 = NULL,ALL_AVERA_TF,ALL_AVERS_V3,ALL_AVERA_V3,ALL_AVERS_V3,ALL_AVES_V3,0);

次のメッセージが表示されます。「iCustom関数のインデックスバッファ番号が 無効です

このiCustomを正しく定義する方法は?

こんにちは mladen 問題点を見つけました。

パラメータを一つ忘れていました。色

正しい定義です。

double ALL_AVERAGES_0 = iCustom(NULL,ALL_AVERA_TF, "AllAverages_v2.3",ALL_AVERA_PERIOD,ALL_AVERA_SHIFT,ALL_AVERA_METHOD,ALL_AVERA_PRICE,ALL_AVERA_COLOR,0) とします。

mladen:
ツール->ヒストリーセンターで、テストしたいシンボルの1分データを選択し、ダウンロードします(90%の精度で必要なのは1分データだけで、残りをダウンロードする必要はありません)。
ファイル:
 
abundance:
Rogerさん、ありがとうございます。それは助かりました。そして、分かりにくくて申し訳ありません。BidとAskの両方の価格が必要なのですがどのように取得するのでしょうか?Pl 愚かな質問であれば失礼します B rgds/abundance

チャート上の価格はすべてBidです。Ask=Bid+MarketInfo(Symbol(),MODE_SPREAD)*Pointです。

 

トレードを制限する

テンプレート生成型のEAビルダーを使って、基本的なEAを書き始めました。EAのテンプレートの前提はできているように見えますが、EAが最大で1つの取引しか行わないようにする方法が必要です。今現在、それは取引を生成し続け、ドローダウンがとんでもないことになる原因となっています。以下は、トレードロットのコードです。

//Check position

bool IsTrade = False;

for (int i = 0; i < 合計; i ++) { { {オーダーセレクト(i, セレクト)

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

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

IsTrade = Trueです。

if(OrderType() == OP_BUY){

//Close

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

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

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

if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY;

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

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

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

if (Order == 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) 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

どなたか助けていただけると助かります。

 
Styex:
そこで、テンプレートを生成するEAビルダーの1つを使って、基本的なEAを書き始めました。EAのテンプレートの前提を得たように見えますが、私はEAが最大で1つの取引しか行わないようにする方法が必要です。もし誰かが助けてくれるなら、それは非常にありがたいことです。
if (OrdersTotal() == 0)

{

//Check position

bool IsTrade = False;

for (int i = 0; i < Total; i ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {

IsTrade = True;

if(OrderType() == OP_BUY) {

//Close

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

//| Signal Begin(Exit Buy) |

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

if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY;

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

//| Signal End(Exit Buy) |

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

if (Order == 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) BarCount = Bars;

IsTrade = False;

continue;

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

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

if(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

} else {

//Close

}
 

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

このEAを見つけたのですが、一部理解できないところがあります。

bool get_signal()

{

bool enable_trade = false;

int trend_up = 0;

int trend_down = 0;

int i;

ArrayInitialize( TradeSign, false );

if( Bars >= 100 ){。

for( i = 0 ; i < DEF_MA_NUM ; i++ ){。

Buf_MA[0][ i ] = calc_SMA( PERIOD_M30, MA_prm_1, i );

Buf_MA[1][ i ] = calc_SMA( PERIOD_M30, MA_prm_2, i ); Buf_MA[2][ i ] = calc_SMA( PERIOD_M30, MA_prm_2, i );

Buf_MA[2][ i ] = calc_SMA( PERIOD_M30, MA_prm_3, i ); Buf_MA[2][ i ] = calc_SMA( PERIOD_M30, MA_prm_3, i );

Buf_MA[3][ i ] = calc_SMA( PERIOD_M30, MA_prm_4, i ); Buf_MA[3][ i ] = calc_SMA( PERIOD_M30, MA_prm_4, i );

Buf_MA[4][ i ] = calc_SMA( PERIOD_M30, MA_prm_5, i ); Buf_MA[4][ i ] = calc_SMA( PERIOD_M30, MA_prm_5, i );

}

double vRSI = iRSI( Symbol(), PERIOD_M5, RSI_period5, PRICE_CLOSE, 0 );

double vRSI2 = iRSI( Symbol(), PERIOD_M1, RSI_period1, PRICE_CLOSE, 0 );

for( i = 0 ; i < DEF_MA_TYP ; i++ ){。

if((Buf_MA[2] < Buf_MA[1]) && (Buf_MA[1] < Buf_MA[0])){。

trend_up++;

}

}

if((trend_up > 3) && (vRSI <= RSI_lower) && (vRSI2 <= RSI_lower)){。

TradeSign[SIG_Buy]=trueとする。

enable_trade = true;

}

for( i = 0 ; i < DEF_MA_TYP ; i++ ){。

if((Buf_MA[2] > Buf_MA[1]) && (Buf_MA[1] > Buf_MA[0])){。

trend_down++;

}

}

if((trend_down > 3) && (vRSI >= RSI_upper) && (vRSI2 >= RSI_upper)){。

TradeSign[SIG_Sell] = true;

enable_trade = true;

}

}

return(enable_trade);

}

double calc_SMA( int timeframe, int period, int offset )

{

double vMA = 0;

double sum=0;

int i;

for( i = 0 ; i < 周期 ; i++ ){。

sum +=iClose( Symbol(), timeframe, i + offset );

}

vMA = sum / period;

return(vMA);

}

trendup>3 "の部分がありますが、これは配列から計算しているのでしょうか?配列がどのように機能して、"trendup>3 "を与えることができるのでしょうか?これは、1本の線(その線は上がるか下がるか)の平均を知るためのものですか?よくわからないのですが、どうすればいいのでしょうか?
ファイル:
 

目標利益に達したときにエキスパートをリセットする方法 私はマーチンゲール戦略を使用していますが、それは順番にロットを開くことはありません...

例:ロット0.1、0.2、0.4、0.8、1.6

オープンロット:0.1, 0.2, 0.4 -> ロット0.4で利益を得るが、次のロットは0.8, 0.1, 0.2, 0.4 ...です。

どなたか助けてください...?

int T=0;

for(int i=0;i<OrdersTotal();i++) {

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol() && OrderComment()==Name_ExpertS)

{ T++;

if(OrderType()==OP_BUY) s=1;

if(OrderType()==OP_SELL) s=2;

Last=OrderOpenPrice();

}}

if (Lots<0.1) Lots=0.1;

for (int j=0;j<T;j++)

{

Lots=LotsUP[j];

}
 

基準による高値・安値

私は、ローソク足が真の高値または真の安値であると述べる前に、特定のものを探すインジケータをコード化しようとしています。 これは基本的に基準です(説明のためにチャートを添付しました)。

1. 1.前のすべての20の終値(第二の矢印はこのポイントです)よりも低い終値を探し、次に(2)12バー後の終値は(第三の矢印)前の12終値よりも高くなければならない。 この上昇トレンドは、(3)7つ前の終値より低い終値(4つ目の矢印)が出るまで続きます。

iLowest関数を使ってみましたが、あまりうまくいきません。 一番いいのは配列を使うことだと思うのですが、私の配列の知識は限られています。

ArrayMinimumと ArrayMaximumの使い方について、何かアイデアや例があれば教えてください。 または、iLowestとiHighestを動作させる方法があれば教えてください。

ファイル: