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

 

Atr decresing code ?(アトール デクレシング コード)?

Atr decresing - コードmql4は何ですか?

--------------------------------------------------------------------------------

Atrのdecresing

コードmql4は何であるか。

私は私のeaがポジションを開けないことを望む場合

ATR d1 は > ATR d1 (-1) です。

 

3段階のトレーリングストップのコード化方法

TrailingStop = 50;

TrailingStop_Over100 =30;

TrailingStop_Over150 = 20。

レベル1:0-100pipの利益 - TSは50pipです。

レベル2:101~150pipの利益 - TSは30pipに変更

レベル3:151pip以上の利益 - TSは20pipに変更

この場合(プラス方向の 動き)、pipの利益が増えたらTSが変わるようにするには、どのようにコーディングすればよいのでしょうか?

Dave

<<<

本当にコーダーの専門知識に感謝します。

 

最初のクロスの後、いくつかのバーの距離を設定する

すべてのプログラマーの第一人者にこんにちは私はML4プログラミングの 初心者と私は問題で立ち往生しています。

それは次のとおりです。

私は2つのEMA 5と20 PERIOD_15とPERIOD_H1にそれぞれ5と20のEMAを持っています。

そこで、最初のクロスPERIOD_M15でポジションを入力すると、もし価格が反対方向に動いて逆クロスをした場合、アドバイザーは同じバーで即座にポジションを閉じます。これはプログラム的には正しいのですが、私の実際の問題は、次の1-2またはそれ以上のバーを待ってから、クロスが見つかった場合は、位置を閉じることです。

もし、同じ問題を持つ関連トピックがここにあるのなら、リンクを送っていただけますか?

とモデレータは、ポストを削除することができます。

thx in advance!

--すでにオープンポジションを持っている場合

-- クロスしすぎの場合

-- このポジションを終了する前に少し待ってください。

--これは、1つのバーで繰り返されるクロスを解決するはずです。

if(firstCross == 1)

{

---------------------------//Close, check if next several bar's printed after OpenOrderPrise() -----------------------------------

if(openbar <= closebar)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Red); // クローズ位置

return(0); // 終了

}else

return(0)を返します。

}

まあ、私はいくつかの不気味な解決策を見つけました 私はすでに添付しています。

もし、タイムシフトの最適化のアイデアや、コードの最適化のアイデアがあれば、どんな提案でも感謝しますthx in advance

ファイル:
 

あなたの助けが必要です

こんにちは、トレーダーです。

このインジケータ(MT4-LevelStop-Reverse-vB0-3)のアラートを開発するのを手伝ってくれる人がいたら、本当に感謝します。

私は、矢印が表示された直後にアラートが鳴るようにしたいと思っています。

よろしくお願いします。

ファイル:
 
chiwing:
こんにちは。

私は貴社のラッキーV2を使用していますが、オブジェクト--ラベル--を使用していないチャート上にテキストを追加するコードを知りたいのですが、写真をご覧ください。

そして、ユーザーはテキストを削除することはできません。

テキストはこんな感じです。"Your lucky is free and still on developing..."。

どのようにコード化するのですか?

サンクス

Comment()コマンドを使用します。

コメント - MQL4 Documentation

 

チャート上のuneliminateAbleテキストをどのようにコード化するか

こんにちは。

私はあなたのラッキーV2を使用しています。そして、オブジェクト--ラベル--を使用していないチャートにテキストを追加するコードを知りたいのですが、写真をご覧ください。

そして、ユーザーはテキストを削除することができません。

テキストはこんな感じです。"Your lucky v2 EA is free and still on developing..."。

どのようにコード化すればいいのでしょうか?

感謝

ファイル:
how_to_code.jpg  134 kb
 

マルチオーダーとマルチトレーリング

私のEAでは、成行と指値の複数の注文を使用しています。

例のように3つのエントリーがあった場合、トレーリングを一緒に開始し、一緒に動作させたい。

1.50で1エントリー

1.4950で2エントリー

1.4930で3本エントリー

トレーリングは50ポイントですが、1.5050に到達する前ではなく、到達してから開始したいのです。通常のトレーリングを使用した場合、価格が1.5001に達すると2番目のエントリーが(それが満たされた場合)トレールし始めますが、私はそれをしたくありません。

ということで、どの注文を使うかを決めるためにチケットを保存しておいた方がいいのでしょうか?

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-Point*StopLoss,Ask+TakeProfit*Point,0,0,Green);

LastClosedBar = Time[0];

RefreshRates();

OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);

entratalong= OrderOpenPrice( );

ticket2=OrderSend(Symbol(),OP_BUYLIMIT,Lots_2ingresso,entratalong-Point*Secentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,1,0,Magenta); // NULL, c'e il null in + //

ticket3=OrderSend(Symbol(),OP_BUYLIMIT,Lots_3ingresso,entratalong-Point*Terzentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,2,0,Magenta); // buono dei test //

[/CODE]

Here the trailign stop, it don't work the trail 1 e trail 2 with at the same time i control the ticket!!!

[CODE]

int TrailStop ()

{

int cnt,result,total=OrdersTotal();

double gain2=Lots_2ingresso;

double gain3=Lots_2ingresso;

int ticket,ticket2,ticket3;

for(cnt = total-1; cnt >= 0; cnt--)

{

RefreshRates();

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if ((OrderSymbol() == Symbol()) && (OrderProfit() > 0.00))

{

if (OrderType()==OP_BUY && OrderTicket()==ticket )

{

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

{

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

{

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

for(cnt = total-1; cnt >= 0; cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if( OrderType()!=OP_SELL && OrderType()!=OP_BUY) //&& trail==1 && OrdersTotal() > 1 )

result =OrderDelete(OrderTicket());

}

Alert("sta facendo trail");

}

}

}

// trailing 2 parte X pip dopo

if (OrderType()==OP_BUY && OrderTicket()==ticket2)

{

if(Bid - OrderOpenPrice() > Point * Trailing2)

{

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

{

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

}

}

}

// trailing 3 parte X pip dopo

if (OrderType()==OP_BUY )

{

if(Bid - OrderOpenPrice() > Point * Trailing3)

{

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

{

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

}

}

}// fine trailing

 

このコードを変更してください EMA

これは素晴らしいコードです。Coders Guruです。どなたか変更していただけませんか? オープントレードをクローズさせるだけにして ほしいのです。私はいつ取引を開始するかを教えてくれるシステムを作りましたが、取引を終了するために一日中コンピュータの前に座っていたくありません。

取引終了のために一日中コンピュータの前に座っているのは嫌です。 ありがとうございます。

 

コードを変更してください

Calvon:
による秀逸なコードです。Coders Guruです。どなたか変更していただけませんか? オープントレードをクローズするだけにしたいのです。私はいつ取引を開始するかを教えてくれるシステムを作成し、取引を終了するために一日中コンピュータの前に座りたくないです。 ありがとうございます。

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

//| EMA_6_12.mq4 |。

//| コードネーム:Coders Guru

//|FX TSD|メタトレーダー指標とExperts Advisors|のページです。

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

#property copyright "Coders Guru" (コーダーズ・グル)

#property link "https://www.forex-tsd.com"

//---- インクルード

#インクルード

//---- 取引の制限

extern double TrailingStop = 40;

extern double TakeProfit = 1000; //任意の大きな数字

extern double Lots = 1;

extern int Slippage = 5;

//--- 外部オプション

extern int CurrentBar = 1;

extern bool UseClose = true;

//--- インジケーターの設定

extern int MaMode = 1; /* MODE_SMA 0 MODE_EMA 1 MODE_SMMA 2 MODE_LWMA 3 */

extern int ShortEma = 4;

extern int LongEma = 8;

//--- グローバル変数

int MagicNumber = 123430;

string ExpertComment = "EMA_4_8";

bool LimitPairs = false;

bool LimitFrame = false;

int TimeFrame = 60;

string LP[] = {"EURUSD", "USDJPY", "AUDUSD", "GBPUSD", "EURGBP", "USDCHF"}; // リミットしたいパリスを追加/削除します。

bool Optimize = false;

int NumberOfTries = 5;

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

int init()

{

return(0);

int deinit()

{

return(0);

}

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

bool isNewSymbol(string current_symbol)

{

//オープンしたすべての注文をループしてシンボルを比較する

int total = OrdersTotal();

for(int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

string selected_symbol = OrderSymbol();

if (current_symbol == selected_symbol && OrderMagicNumber()==MagicNumber)

return (False);

}

return (True);

}

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

int Crossed()

{

double EmaLongPrevious = iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar+1);

double EmaLongCurrent = iMA(NULL,0,LongEma,0,MaMode,PRICE_CLOSE,CurrentBar); double EmaShortPrevious = iMA(NULL,0,LongEma,0,MaMode,PRICE_CLOSE,CurrentBar);

ダブル EmaShortPrevious = iMA(NULL,0,ShortEma,0,MaMode,PRICE_CLOSE,CurrentBar+1);

double EmaShortCurrent = iMA(NULL,0,ShortEma,0,MaMode,PRICE_CLOSE,CurrentBar); double EmaShortCurrent = iMA(NULL,0,ShortEma,0,MaMode,PRICE_CLOSE,CurrentBar);

if (EmaShortPreviousEmaLongCurrent ) return (1); //アップトレンド

if (EmaShortPrevious>EmaLongPrevious && EmaShortCurrent<EmaLongCurrent ) return (2); //下降トレンド

return (0); //その他の場所

}

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

int start()

{

int cnt, ticket, total,n;

double trend ;

if(Bars<100) {Print("bars less than 100"); return(0);}.

if(LimitFrame)

{

if(Period()!=TimeFrame) {Print("This EA is not working with this TimeFrame!"); return(0);}。

}

if(LimitPairs)

{

if(AllowedPair(Symbol()) == false) {Print("This EA is not working with this Currency!"); return(0);} {Print("This EA is not working with this Currency!

}

//--- 取引条件

bool BuyCondition = false , SellCondition = false , CloseBuyCondition = false , CloseSellCondition = false ;

if (Crossed() == 1 )

BuyCondition = false とする。

if (クロス()== 2 )

SellCondition = false となります。

if (クロス()== 1)

CloseBuyCondition = true。

if (クロス()== 1)

CloseSellCondition = true。

total = OrdersTotal();

if(total < 1 || isNewSymbol(Symbol()))

{

if(BuyCondition) //<-- 買いの条件

{

ticket = OpenOrder(OP_BUY); //<-- BUY注文を出す

CheckError(ticket, "BUY");

return(0);

}

if(SellCondition) //<-- 売り条件

{

ticket = OpenOrder(OP_SELL); //<-- SELL注文を出す

CheckError(ticket, "SELL");

return(0);

return(0);

}

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

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

{

if(OrderType()==OP_BUY) //<-- ロングポジションを保有中

{

if(UseClose)

{

if(CloseBuyCondition) //<-- 注文をクローズして退場!

{

CloseOrder(OrderType());return(0);

}

TrailOrder(OrderType()); return(0); //<-- 注文をトレールする。

}

if(OrderType()==OP_SELL) //<-- ショートポジションへ移動

{

if(UseClose)

{

if(CloseSellCondition) //<-- 注文をクローズして退場!

{

CloseOrder(OP_SELL); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- 注文をトレールする。

}

}

}

return(0);

}

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

int OpenOrder(int type)

{

int ticket=0;

int err=0;

int c = 0;

if(type==OP_BUY)

{

for(c = 0 ; c < 試行回数 ; c++)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,Ask+TakeProfit*Point,ExpertComment,MagicNumber,0,Green);

err=GetLastError()。

if(err==0)

{

ブレーク

}

さもなくば

{

if(err==4 || err==137 ||err==146 || err==136) //ビジー・エラー

{

Sleep(5000);

を続ける。

}

else //正常なエラー

{

ブレーク

}

}

}

}

if(type==OP_SELL)

{

for(c = 0 ; c < 試行回数 ; c++)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,Bid-TakeProfit*Point,ExpertComment,MagicNumber,0,Red);

err=GetLastError()。

if(err==0)

{

ブレーク

}

さもなくば

{

if(err==4 || err==137 ||err==146 || err==136) //ビジー・エラー

{

Sleep(5000);

を続ける。

}

else //正常なエラー

{

ブレーク

}

}

}

}

return(ticket)。

}

bool CloseOrder(int type)

{

if(OrderMagicNumber() == MagicNumber)

{

if(type==OP_BUY)

return (OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet));

if(type==OP_SELL)の場合

return (OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet))となります。

}

}

void トレールオーダー(int type)

{

if(TrailingStop>0)

{

if(OrderMagicNumber() == MagicNumber)

{

if(type==OP_BUY)

{

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

{

if(オーダーストップ・ロス()<ビッドポイント*トレイリングストップ)

{

注文変更(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

}

}

}

if(type==OP_SELL)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)))。| (OrderStopLoss()==0))の場合

{

注文変更(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red).を実行。

}

}

}

}

}

}

void CheckError(int ticket, string Type)

{

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print(Type + " order opened : ",OrderOpenPrice());

else Print("Error opening " + Type + " order :", ErrorDescription(GetLastError()));

bool AllowedPair(string pair)

{

bool result=false;

for (int n = 0 ; n < ArraySize(LP); n++)

{

if(Symbol() == LP[n])

{

result = true。

}

}

return (result);

}

 
理由: