コーディングのヘルプ - ページ 19 1...121314151617181920212223242526...786 新しいコメント vegadigitalco 2012.01.30 16:09 #181 あなたの助けでEAが完成しました。 こんにちは、mLadenです。 本当にありがとうございます。 私はあなたの助けを借りて私のEAを完成させました、もう一度ありがとうございます。 ThanXXXXXXXX elbee1 2012.02.01 06:32 #182 インジケーターの再塗装 数週間前にこの質問をこのスレッド 'Coding Help' に投稿したのですが、何の反応も得られませんでした。 ほとんどのMTFインジケータはリペイントしますが、中にはもっと多いものもあります。私は、わずかにリペイントするものがありますが、非常に優れていて、メソッドに含めることができる要素が1つあります。問題は、それが意味をなすために、常に手動で更新/リフレッシュする必要があることです。自動更新をコード化する方法はないでしょ うか? 現在、リフレッシュするには、チャートの時間を変更してから戻るか、チャート/リフレッシュタブを開くか、チャートに別のインディケータを追加して前のものを削除するか......何度も何度も繰り返す必要があります。非常に時間がかかります! もし、この自動リフレッシュをする方法があれば、私が見つけたものを共有します.........。 Thx, エルビー Mladen Rakic 2012.02.01 06:41 #183 ... エルビー メタトレーダーは、新しいティックが入ると、ウィンドウ内の各インジケーターに自動更新の信号を送っていますので、更新の問題ではありません。通常、このような問題は、インジケータが変更されたバーの 数(インジケータでは通常「リミット」と呼ばれます)を適切に検出しない場合に発生します...したがって、これはインジケータの問題です。時間枠を変更すると、すべてのバーを再計算するため、その場合は正しく表示され、1本だけ変更された場合は正しく表示されないのです。 結論:インジケーターのコードをチェックする - バグがあります。 el bee: 数週間前にこの質問をこのスレッド 'Coding Help' に投稿したのですが、何の反応もありませんでした。ほとんどのMTFインジケータはリペイントしますが、もっと多くリペイントするものもあります。私が持っているものは、若干のリペイントがありますが、非常に良い要素があり、メソッドに含めることができます。問題は、それが意味をなすために、常に手動で更新/リフレッシュする必要があるということです。自動更新をコード化する方法はないでしょうか?現在、リフレッシュするには、チャートの時間を変更してから戻るか、チャート/リフレッシュタブを開くか、チャートに別のインディケータを追加して前のものを削除するか......何度も何度も繰り返す必要があります。非常に時間がかかります!もし、この自動リフレッシュをする方法があれば、私が見つけたものを共有します.........。Thx, エルビー dolast 2012.02.11 04:52 #184 インジケーターヘルプ 私は、調整可能な最新のキャンドルに垂直線を 置くインジケータを使用することができ、誰かがそれを持っていると共有することができますまたは1つが作られた場合、それは最も高く評価されるだろう。 Vincent 2012.02.11 09:32 #185 コードが間違っているのでしょうか? 私はバーの開始と終了に基づく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 gpociejewski 2012.02.11 12:51 #186 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] Coding help [アーカイブ!】無料でアドバイザーを書きます。 コーディングの方法は? kasio 2012.02.14 00:29 #187 コーディングのヘルプです。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を付けられるようにするのを手伝ってくれませんか? どんな助けでも大いに感謝します。よろしくお願いします。 よろしくお願いします。 カシオ gpociejewski 2012.02.14 15:50 #188 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 コーディングの方法は? Coding help [アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. 削除済み 2012.02.20 18:15 #189 チック毎に情報が更新されない こんにちは、皆さん。 様々なインジケータの情報を画面に表示する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); } //+------------------------------------------------------------------+ Coding help どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - コーディングの方法は? conf12L 2012.02.21 09:35 #190 KGサポート&レジスタンスモデル こんにちは。 添付のサポート&レジスタンス・インジケータの一つを改造して欲しいのですが、どなたか教えてください。最初のものは、ブレイクアウトが行われたときにアラートを持っています。このインジケータは最高のサポート/レジスタンスインジケータの一つであり、特に高い時間枠で非常に強力です。 ありがとうございます。 kg_support_and_resistance.mq4 または kg_support_and_resistance_alert_revision_2.ex4。 ファイル: kg_support_and_resistance.mq4 5 kb kg_support_and_resistance_alert_revision_2.ex4 9 kb 1...121314151617181920212223242526...786 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
あなたの助けでEAが完成しました。
こんにちは、mLadenです。
本当にありがとうございます。
私はあなたの助けを借りて私のEAを完成させました、もう一度ありがとうございます。
ThanXXXXXXXX
インジケーターの再塗装
数週間前にこの質問をこのスレッド 'Coding Help' に投稿したのですが、何の反応も得られませんでした。
ほとんどのMTFインジケータはリペイントしますが、中にはもっと多いものもあります。私は、わずかにリペイントするものがありますが、非常に優れていて、メソッドに含めることができる要素が1つあります。問題は、それが意味をなすために、常に手動で更新/リフレッシュする必要があることです。自動更新をコード化する方法はないでしょ うか?
現在、リフレッシュするには、チャートの時間を変更してから戻るか、チャート/リフレッシュタブを開くか、チャートに別のインディケータを追加して前のものを削除するか......何度も何度も繰り返す必要があります。非常に時間がかかります!
もし、この自動リフレッシュをする方法があれば、私が見つけたものを共有します.........。
Thx,
エルビー
...
エルビー
メタトレーダーは、新しいティックが入ると、ウィンドウ内の各インジケーターに自動更新の信号を送っていますので、更新の問題ではありません。通常、このような問題は、インジケータが変更されたバーの 数(インジケータでは通常「リミット」と呼ばれます)を適切に検出しない場合に発生します...したがって、これはインジケータの問題です。時間枠を変更すると、すべてのバーを再計算するため、その場合は正しく表示され、1本だけ変更された場合は正しく表示されないのです。
結論:インジケーターのコードをチェックする - バグがあります。
数週間前にこの質問をこのスレッド '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が取引をすることがあります。
コードの間違いを修正するのを助けてください。
私はバーの開閉に基づく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を付けられるようにするのを手伝ってくれませんか?
どんな助けでも大いに感謝します。よろしくお願いします。
よろしくお願いします。
カシオ
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。