コーディングのヘルプ - ページ 19

 

あなたの助けでEAが完成しました。

こんにちは、mLadenです。

本当にありがとうございます。

私はあなたの助けを借りて私のEAを完成させました、もう一度ありがとうございます。

ThanXXXXXXXX

 

インジケーターの再塗装

数週間前にこの質問をこのスレッド 'Coding Help' に投稿したのですが、何の反応も得られませんでした。

ほとんどのMTFインジケータはリペイントしますが、中にはもっと多いものもあります。私は、わずかにリペイントするものがありますが、非常に優れていて、メソッドに含めることができる要素が1つあります。問題は、それが意味をなすために、常に手動で更新/リフレッシュする必要があることです。自動更新をコード化する方法はないでしょ うか?

現在、リフレッシュするには、チャートの時間を変更してから戻るか、チャート/リフレッシュタブを開くか、チャートに別のインディケータを追加して前のものを削除するか......何度も何度も繰り返す必要があります。非常に時間がかかります!

もし、この自動リフレッシュをする方法があれば、私が見つけたものを共有します.........。

Thx,

エルビー

 

...

エルビー

メタトレーダーは、新しいティックが入ると、ウィンドウ内の各インジケーターに自動更新の信号を送っていますので、更新の問題ではありません。通常、このような問題は、インジケータが変更されたバーの 数(インジケータでは通常「リミット」と呼ばれます)を適切に検出しない場合に発生します...したがって、これはインジケータの問題です。時間枠を変更すると、すべてのバーを再計算するため、その場合は正しく表示され、1本だけ変更された場合は正しく表示されないのです。

結論:インジケーターのコードをチェックする - バグがあります。

el bee:
数週間前にこの質問をこのスレッド 'Coding Help' に投稿したのですが、何の反応もありませんでした。

ほとんどのMTFインジケータはリペイントしますが、もっと多くリペイントするものもあります。私が持っているものは、若干のリペイントがありますが、非常に良い要素があり、メソッドに含めることができます。問題は、それが意味をなすために、常に手動で更新/リフレッシュする必要があるということです。自動更新をコード化する方法はないでしょうか?

現在、リフレッシュするには、チャートの時間を変更してから戻るか、チャート/リフレッシュタブを開くか、チャートに別のインディケータを追加して前のものを削除するか......何度も何度も繰り返す必要があります。非常に時間がかかります!

もし、この自動リフレッシュをする方法があれば、私が見つけたものを共有します.........。

Thx,

エルビー
 

インジケーターヘルプ

私は、調整可能な最新のキャンドルに垂直線を 置くインジケータを使用することができ、誰かがそれを持っていると共有することができますまたは1つが作られた場合、それは最も高く評価されるだろう。

 

コードが間違っているのでしょうか?

私はバーの開始と終了に基づくEAを書こうとしています。

しかし、私は取引を開始する条件についての問題がある。

私のメソッドは、そのようなものです。

現在のバーのオープンが前のバーのクローズよりも高いときに+売り。TPは前のバーの終値です。

現在のバーのオープンは、前のバーのオープンよりも低いときに+買い。TPは前のバーのオープン

現在のバーを閉じたときに+ CLOSE .

そして、ここにコード(私はまだmql4を学ぶためにしようとしているので、私はそれが最高のコードではないことを知っている)があります。

#property link "sando"

#定義MAGICMA 20050610

//====================parameter===================//

extern double solantang =3;

EXTERN DOUBLE SOLANGIUM =3;

extern double LotsSize =1;

//==============================================//

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

///オープントレードのチェック

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

int CalculateCurrentOrders(string symbol)

{

int buys=0,sells=0;

//----

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

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)

{

if(OrderType()==OP_BUY)買います++。

if(OrderType()==OP_SELL)売値++。

}

}

//---- 注文数量を返す

if(buys>0) return(buys)。

else return(-sells)。

}

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

|| マネーマネージメント(タイプ3

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

double moneymanagement3()

{

double LotsSize = 0.1;

if(OrdersHistoryTotal()>0)

{

OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);

if(OrderProfit() > 0)

{

if(OrderLots() > LotsSize)

{

LotsSize = OrderLots()/solangiam;

さもなくば

{

LotsSize = LotsSize;

}

}

その他

{

LotsSize = OrderLots() * solantang;

}

}

return (NormalizeDouble(LotsSize,2));

}

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

//| トレードを開始するためのCONDITION

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

void opentrade()

{

int res;

if(クローズ[0]<オープン[1])

{

res=OrderSend(Symbol(),OP_SELL,moneymanagement3(),Bid,3,Close[0],Close[1],"", MAGICMA,0,Red);

を返します。

}

if(Open[0]>Open[1])の場合

{

res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,Open[0],Close[1],"", MAGICMA,0,Blue);

を返します。

}

}

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

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

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

void start()

{

//---- 履歴と取引をチェックする

if(Bars<100 || IsTradeAllowed()==false) return;

//---- 現在のシンボルで未決済注文を計算する

if(CalculateCurrentOrders(Symbol())==0) opentrade();

// else donggiaodich();

//----

}

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

添付の画像をご覧 ください。

コードに何か問題があるようです

条件を満たしたときにEAが取引をしないときがある T_T なぜかわからないが

条件を満たさないときにEAが取引をすることがあります。

コードの間違いを修正するのを助けてください。

ファイル:
1_2.gif  12 kb
new_edge.mq4  4 kb
 
7thman:
私はバーの開閉に基づくEAを書こうとしています。

しかし、私は貿易を開くための条件についての問題があります。

私のメソッドは、そのようなものです。

現在のバーのオープンが前のバーのクローズよりも高いときに+売り。TPは前のバーの終値です。

現在のバーのオープンは、前のバーのオープンよりも低いときに+買い。TPは前のバーのオープン

現在のバーを閉じたときに+ CLOSE .

とここでコードです(私はまだmql4を学ぶためにしようとしているので、私はそれが最高のコードではないことを知っている)。

と添付ファイルに画像を確認してください

私は何かがコードで間違っていると思う

条件を満たしたときにEAが取引をしないことがある T_T なぜかわからないけど

条件を満たさないのにEAが取引することがある!

コードの誤りを修正するのを助けてください。

[lang=pl]+現在のバーのオープンが前のバーのクローズより高い場合、売り。TPは前のバーの終値です。

現在のバーのオープンが前のバーのオープンより低い場合、+買い。TPは前のバーのオープン

ここで、最初の間違いがあります。

if(クローズ[0]クローズ[1])

if(Open[0]>Open[1]) (本来は Open[0]<Open[1] であるべき)

2つ目は、StopLossです。あなたのコードでは、StopLoseを設定していますが、上記の説明で

新しいバーが現れたら取引を終了すると書いてありますね。

ここでもう一つ問題があります。Open[0]<Open[1]だとします。その差は非常に小さく

注文が実行されるとき、価格はOpen[1]を超え、TPは注文の開始価格より低くなります。

が注文の始値より 小さくなってしまう。このようなケースに対応できるような条件を追加してみました。

もし、あなたがすべての注文をバーが終了した時点で決済したいのであれば、次のようなコードになります。

#プロパティリンク "sando"

#定義MAGICMA 20050610

//====================parameter===================//

EXTERN DOUBLE SOLANTANG =3;

EXTERN DOUBLE SOLANGIUM =3;

extern double LotsSize =1;

//==============================================//

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

///オープントレードのチェック

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

int CalculateCurrentOrders(string symbol)

{

int buys=0,sells=0;

//----

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

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false ) break;

if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)

{

if(OrderType()==OP_BUY)買います++。

if(OrderType()==OP_SELL)売値++。

}

}

//---- 注文数量を返す

if(buys>0) return(buys)。

else return(-sells)。

}

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

|| マネーマネージメント(タイプ3

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

double moneymanagement3()

{

double LotsSize = 0.1;

if(OrdersHistoryTotal()>0)

{

OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);

if(OrderProfit() > 0)

{

if(OrderLots() > LotsSize)

{

LotsSize = OrderLots()/solangiam;

さもなくば

{

LotsSize = LotsSize;

}

}

その他

{

LotsSize = OrderLots() * solantang;

}

}

return (NormalizeDouble(LotsSize,2));

}

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

//| トレードを開始するためのCONDITION

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

void opentrade()

{

int res;

if(Close[1] クローズ[1] )

{

res=OrderSend(Symbol(),OP_SELL,moneymanagement3(),Bid,3,0,Close[1],"",MAGICMA,0,Red);

を返します。

}

if(Open[0]<Open[1] && Ask < Open[1])

{

res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,0,Open[1],"", MAGICMA,0,Blue);

を返します。

}

}

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

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

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

void start()

{

if(isNewBar())

{

closeOrders(MAGICMA,OP_BUY)。

closeOrders(MAGICMA,OP_SELL)。

}

Print(Close[1]-Open[0]);

//---- 履歴と売買をチェック

if(Bars<100 || IsTradeAllowed()==false) return;

//---- 現在のシンボルで未決済注文を計算する

if(CalculateCurrentOrders(Symbol())==0) opentrade();

// else donggiaodich();

//----

void closeOrders(int oMagic,int oType) {

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

if(オーダーセレクト(i,SELECT_BY_POS)) { { (オーダーセレクト(i,SELECT_BY_POS))

if(OrderMagicNumber()==oMagic || oMagic<0)){

if(オーダーシンボル()==シンボル()) {

if(オーダータイプ()==oType || oType<0)){

if(オーダータイプ()==OP_BUY){

OrderClose(OrderTicket(),OrderLots(),Bid,0)。

i--;

if (OrderType() == OP_BUYSTOP)

{

OrderDelete(OrderTicket())。

i--;

if(OrderType()==OP_SELL)の場合{。

OrderClose(OrderTicket(),OrderLots(),Ask,0)。

i--;

}

if (OrderType()==OP_SELLSTOP)の場合

{

OrderDelete(OrderTicket())。

i--;

}

}

}

}

}

}

}

bool isNewBar() { (ブール)

静的 int prevTime;

bool newBar=false;

if(Time[0]!=prevTime){。

newBar=true。

prevTime=Time[0]です。

}

return(newBar);

}

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

乾杯

Grzesiek[/lang]

 

コーディングのヘルプです。ECNブローカーを使用してEAでストップロス&テイクプロフィットを配置する

ECNブローカーを使用したストップロス、テイクプロフィット

友人です。

私はMQL4プログラミングの 初心者で、ECNブローカーを使ったORDERSENDにSLとTPを付ける手助けが必要です。

当初、SLとTPがなぜ私の注文をエラーにするのか理解できませんでしたが、誰かがORDERSEND内のStopLossとTakeProfitフィールドを「0」に設定しなければ、ECN/STPブローカーが注文を実行しないことを指摘しました。

そこで質問ですが、成行で注文を実行し、すぐに(または1~2秒以内に)そのチケットにSL/TPを付けるにはどうしたらよいでしょうか?

以下は、私の質問に関連するコードの一部です。

if(CurrentPriceBuy>UpperPriceTrigger)

{

OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,Co mm,0,0,CLR_NONE);

}

誰かOrderSendコマンドの直後にコードを挿入して、その特定のチケットに任意で25pipsのTP/SLを付けられるようにするのを手伝ってくれませんか?

どんな助けでも大いに感謝します。よろしくお願いします。

よろしくお願いします。

カシオ

 
kasio:
ECNブローカーでストップロス、テイクプロフィット

友人です。

私はMQL4プログラミングの初心者で、ECNブローカーでORDERSENDにSLとTPを付けるのを手伝って欲しいのです。

当初、SLとTPがなぜ私の注文をエラーにするのか理解できませんでしたが、誰かがORDERSEND内のStopLossとTakeProfitフィールドを「0」に設定しなければ、ECN/STPブローカーが注文を実行しないことを指摘しました。

そこで質問ですが、成行で注文を実行し、すぐに(あるいは1、2秒以内に)そのチケットにSL/TPを付けるにはどうしたらよいでしょうか?

以下は、私の質問に関連するコードの一部です。

if(CurrentPriceBuy>UpperPriceTrigger)

{

OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,Co mm,0,0,CLR_NONE);

}

誰かOrderSendコマンドの直後にコードを挿入して、その特定のチケットに任意で25pipsのTP/SLを付けられるようにするのを手伝ってくれませんか?

どんな助けでも大いに感謝します。よろしくお願いします。

ありがとうございます。

カシオ

kasioさん、こんにちは。

ECNブローカーで取引している場合、SL/TPなしで注文を送信し、それを修正する必要があります。

以下はその例です。

extern double StopLoss = 25;

extern double TakeProfit = 25;

if(isECN==true )

{

ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,slippage,0,0,comment,magic);

OrderSelect(ticket,SELECT_BY_TICKET);

OrderModify(ticket,OrderOpenPrice(),sltpValue(Bid - StopLoss*Point, StopLoss),sltpValue(Ask+ TakeProfit*Point, TakeProfit),0).注文を変更します。

}

double sltpValue(double w1, int w2)

{

if(w2 == 0)

return (0);

return (NormalizeDouble(w1, Digits));

}

私は、その明確なことを願っています。

もっと質問がある場合は、私にPMを。

乾杯

grzesiek

 

チック毎に情報が更新されない

こんにちは、皆さん。

様々なインジケータの情報を画面に表示するEAを作りました。

しかし、このEAをチャートに貼り付けると、情報は5分ごとにしか更新されません。

チック毎ではなく、5分毎にしか更新されません。 私のコーディングに何か問題があるのでしょうか?私は、情報がチックごとに変更されるのを見たいです。

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

//| test.mq4

//| Copyright © 2011, Test Inc.|

//|test.net - Test Resources and Information.|

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

#property copyright "著作権 © 2011, Test Inc."

#property link "http://www.test.net"

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

//| ラベル

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

#define ccilabel "CCIValue"(シリベル)。

#define rsilabel "RSIValue" (RSI値)

#define stochlabel "StochValue" (ストークラベル)

#define upperbandlabel "UpperBandValue" (アッパーバンドラベル)

#define lowerbandlabel "LowerBandValue" (ローワーバンドバリュー)

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

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

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

int init()

{

//----

//----

return(0);

}

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

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

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

int deinit()

{

//----

//----

return(0);

}

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

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

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

int start()

{

//----

//===================================================================

// 動的相対力指数の表示

//===================================================================

double RSI;

double UpperBand;

double LowerBand;

RSI=iCustom(NULL,0, "Dynamic Zone RSI",14,0,1);

UpperBand=iCustom(NULL,0, "Dynamic Zone RSI",14,1,1); RSI=iCustom(NULL,0, "Dynamic Zone RSI",14,0,1);

LowerBand=iCustom(NULL,0, "Dynamic Zone RSI",14,2,1); UpperBand=iCustom(NULL,0, "Dynamic Zone RSI",14,1,1);

//===================================================================

// CCIを表示する

//===================================================================

double CCI;

CCI=iCCI(NULL,0,14,PRICE_TYPICAL,1);

//===================================================================

// ストキャスティクス測定

//===================================================================

double Stoch;

Stoch=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1);

//===================================================================

// 表示情報

//===================================================================

// CCIValue

ObjectDelete(ccilabel);

ObjectCreate(ccilabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(ccilabel, OBJPROP_XDISTANCE, 20); ObjectSet(ccilabel, OBJPROP_XDISTANCE, 20);

ObjectSet(ccilabel, OBJPROP_YDISTANCE, 20); ObjectSet(ccilabel, OBJPROP_XDISTANCE, 20);

ObjectSetText(ccilabel, "CCIValue is " + DoubleToStr(CCI,2), 10, "Arial", DeepSkyBlue).これは、CCIValueの値が、CCIValueの値よりも小さいことを意味します。

// ストーク値

ObjectDelete(stochlabel);

ObjectCreate(stochlabel, OBJ_LABEL, 0, 0, 0); // ObjectSet(stochlabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(stochlabel, OBJPROP_XDISTANCE, 20); ObjectSet(stochlabel, OBJPROP_XDISTANCE, 20);

ObjectSet(stochlabel, OBJPROP_YDISTANCE, 40); ObjectSet(stochlabel, OBJPROP_YDISTANCE, 40);

ObjectSetText(stochlabel, "StochValue is " + DoubleToStr(Stoch,2), 10, "Arial", DeepSkyBlue).これは、RSIValueの値が、"DoubleToStr(Stoch,2) "であることを意味します。

// RSIValue

ObjectDelete(rsilabel);

ObjectCreate(rsilabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(rsilabel, OBJPROP_XDISTANCE, 20).ObjectSet(rsilabel,OBJPROP_XDISTANCE)。

ObjectSet(rsilabel, OBJPROP_YDISTANCE, 60);

ObjectSetText(rsilabel, "RSIValue is " + DoubleToStr(RSI,2), 10, "Arial", DeepSkyBlue);

// アッパーバンド値

ObjectDelete(upperbandlabel);

ObjectCreate(upperbandlabel, OBJ_LABEL, 0, 0, 0); // ObjectSet(upperbandlabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(upperbandlabel, OBJPROP_XDISTANCE, 20); ObjectSet(upperbandlabel, OBJPROP_XDISTANCE, 20);

ObjectSet(upperbandlabel, OBJPROP_YDISTANCE, 80); ObjectSet(upperbandlabel, OBJPROP_YDISTANCE, 80);

ObjectSetText(upperbandlabel, "UpperbandValue is " + DoubleToStr(UpperBand,2), 10, "Arial", DeepSkyBlue);

// LowerBandValue

ObjectDelete(lowerbandlabel);

ObjectCreate(lowerbandlabel, OBJ_LABEL, 0, 0, 0).ObjectSet(lowerbandlabel,2)。

ObjectSet(lowerbandlabel, OBJPROP_XDISTANCE, 20);

ObjectSet(lowerbandlabel, OBJPROP_YDISTANCE, 100); ObjectSet(lowerbandlabel, OBJPROP_YDISTANCE, 100);

ObjectSetText(lowerbandlabel, "LowerBandValue is " + DoubleToStr(LowerBand,2), 10, "Arial", DeepSkyBlue).ObjectSetText(lowerbandlabel,LowerBandValue)を追加します。

//----

return(0);

}

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

 

KGサポート&レジスタンスモデル

こんにちは。

添付のサポート&レジスタンス・インジケータの一つを改造して欲しいのですが、どなたか教えてください。最初のものは、ブレイクアウトが行われたときにアラートを持っています。このインジケータは最高のサポート/レジスタンスインジケータの一つであり、特に高い時間枠で非常に強力です。

ありがとうございます。

kg_support_and_resistance.mq4 または

kg_support_and_resistance_alert_revision_2.ex4。