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

 

直ったかと思ったのですが、そうではありません。

私がしようとしているのは、チャート上とジャーナル上に、現在のポジションを開くためにどのエントリー条件が使われたかを示すコメントを表示させることです。

これは以前に行われたことがあり、どのように行うのでしょうか?なぜなら、私はここしばらくの間試してきましたが、うまくいかず、私が思っていたほど簡単ではありませんでした。

以下は、私の最新の試みです。

どんな助けでも偉大であろう

buysig = Long || Long2 || Long3 || Long4;

このような場合、「Sellig = Short || Short2 || Short3 || Short4;

closebuy=sellsig;

closesell=buysigです。

if (curprof>=AccountEquity()*ProfitExit/100.0) {。

exit=true。

}

if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars){。

remorder=true。

}

}

void CheckForOpen() {

int res,tr;

//---- 売り条件

co=CalculateCurrentOrders(Symbol())。

if(sellsig && lastsig!=-1){ ショート == true

if ( Short == true)Print(" Short signal taken ").If ( Short2 == true)Print(" Short signal taken ");

if ( Short2 == true)Print(" Short2 signal taken "); if ( Short3 == true)Print(" Short2 signal taken ");

if ( Short3 == true)Print(" Short3 シグナルを取得しました "); if ( Short4 == true)Print(" Short3 シグナルを取得しました ");

if ( Short4 == true)Print(" Short4 signal taken "); if ( Short4 == true)Print(" Short4 signal taken ");

co=CalculateCurrentOrders(Symbol())。

if (co=0){。

res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1);

}

lastsig=-1;

last=Time[0];

を返します。

}

//---- 買いの条件

co=CalculateCurrentOrders(Symbol())。

if(buysig && lastsig!=1) {

if ( Long == true) Print(" Long signal taken ");

if ( Long2 == true)Print(" Long2 signal taken ").If ( Long3 == true) Print(" Long2 signal taken ");

if ( Long3 == true) Print(" Long3 signal taken ").If ( Long4 == true) Print(" Long3 signal taken ");

if ( Long4 == true)Print(" Long4 signal taken "); if ( Long4 == true)Print(" Long4 signal taken ");

co=CalculateCurrentOrders(Symbol())。

if (co=0){。

res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1);

}

last=Time[0];

lastsig=1;

を返します。

}

}

bool CloseAtMarket(int ticket,double lot) { //異常な成行注文の終了

//フォールトトレラント成行注文の引け

bool bres=false; int tr;

tries=0;

while (!bres && tries<OrderTriesNumber) { (トライス<注文トライ数)

RefreshRates();

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

tries++;

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

if (!bres) Print("Error closing order :",ErrorDescription(GetLastError()))。

}

int OpenStop(int mode,double lot, double prc, int SL, int TP) { { int res,tr,col; { int res,tr,col; { int prc, int SL, int TP

int res,tr,col;

文字列メール

double openprice,sl,tp,stlev;

tries=0;

stlev=(1+MarketInfo(Symbol(),MODE_STOPLEVEL))*Point;

while (res<=0 && tries<OrderTriesNumber) {。

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

RefreshRates();

if (モード==OP_SELLSTOP) {。

if (prc<=Bid-stlev) openprice=prc;

else openprice=Bid-stlev;

if (SL>0) sl=openprice+SL*Point;

if (TP>0) tp=openprice-TP*Point;

col=Red;

} else

if (モード==OP_BUYSTOP) {。

if (prc>=Ask+stlev) openprice=prc;

else openprice=Ask+stlev;

if (SL>0) sl=openprice-SL*Point;

if (TP>0) tp=openprice+TP*Point;

col=Blue;

} else return;

Print(Ask," ",Bid," ",Symbol()," ",mode," ",lot," ",openprice," ",sl," ",tp," ").print()を実行します。

res=OrderSend(Symbol(),mode,lot,openprice,slippage,sl,tp,EAName+"_"+ MagicNumber, MagicNumber,0,col);

tries++;

}

if (res<=0) Print("Error openingpending order:",ErrorDescription(GetLastError()))。

return(res);

 

このEAはコンパイルさえしません。ストップロスはあなたの懸念の最たるものでしょう。 5つの変数にランダムなスペースが入っていたり、最初の文字が大文字でないものがあります。

 
jturns23:
このEAはコンパイルすらできないので、ストップロスが一番気になるところです。 5つの変数にランダムなスペースが入っていたり、最初の文字が大文字でないものがあります。

修正版はこちらです。

しかし、これはまだどのポジションも開くことができません。なぜなら、ロング/ショートポジションを開く方法を決定するためのロジックがコード内にないからです。

ファイル:
 
 

このEAに関するヘルプ

Michel:
このCHinGsMAroonCLKは誰ですか?

私の記憶では、このEAはelCactusの10p3以外の何ものでもないのですが、たぶん私が間違っているのでしょう。

そのスレッドをチェックしてください、おそらくあなたが探しているものが見つかるでしょう: https://www.mql5.com/en/forum/174975

OK...それで、今問題なのは、このEAにストップロスを置くことができないことです。

 

none trading zone - コードヘルプ

こんにちは、皆さん。

私はコードを微調整しようとしていますが、多くの努力の後、私はまだそれを正しく得ることができませんでした...あなた方のうちの誰かがこれを見ることができます気にしない...感謝....

このアイデアは、価格帯が前のトレードと同じゾーンにある場合、次のトレードを停止することです。ロングトレードは前回のOPEN POSITIONロングトレードのゾーンをチェック し、ショートトレードは前回のOPEN POSITIONショートトレードのゾーンをチェックします。

例えば、1回目のLONGが1.4000の場合、2回目のLONGは価格がゾーン(20pipsゾーン)から1.3990未満&1.4010以上に移動した場合のみトリガーされます。

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

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

//| 横ばい相場用フィルター - 似たような価格帯での複数回取引を防ぎ、取引禁止ゾーンを作成する。

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

extern int Zone1 = -10; // (下限ゾーン)

extern int Zone2 = 10; // (アッパーゾーン)

// 直前の取引から-10と+10の間に取引ゾーンがない場合

bool CheckZone(int type)

{

int cnt = OrdersTotal();

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

{

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

if (OrderSymbol() != Symbol()) continue;

if (OrderMagicNumber() != Magic) continue;

if (OrderType() != type) continue; if (OrderType() != type) continue;

if (タイプ == OP_BUY)

{

if( (Bid - OrderOpenPrice()) > Zone1*Point && (Bid - OrderOpenPrice()) < Zone2*Point ) return(false);

}

if (タイプ == OP_SELL)

{

if( (OrderOpenPrice()-Ask) > Zone1*Point && (OrderOpenPrice()-Ask) < Zone2*Point ) return(false)。

}

}

return (true);

 

EAの問題を解決する

こんにちは、MQLプログラマーの皆さん。

以下のコードをチェックして、なぜ私のデモ 口座で取引が行われないのか教えてください。GJ 1mでは良いEAなのですが、残念ながら動作していません。どなたか修正し、バグのないEAとして使用できるようにしていただけないでしょうか。

私は、ありがたいことに事前にしています

よろしくお願いします。

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

extern int Length1 = 3;

extern int Length2 = 10;

extern int Length3 = 16;

double ヒスト[];

double MaHisto[];

double up[];

double dn[];

double upMode[];

double dnMode[];

int alertBar;

int init()

{

return(0);

int deinit()

{

return(0);

}

int start()

{

int limit;

int counted_bars=IndicatorCounted();

if(counted_bars<0)counted_bars=0。

if(counted_bars>0)counted_bars--。

limit=Bars-counted_bars;

for(int i = 0 ;i <= limit ;i++)Histo = iMA(Symbol(),0,Length1,0,MODE_EMA,PRICE_CLOSE,i)-iMA(Symbol(),0,Length2,0,MODE_EMA,PRICE_CLOSE,i).を計算する;

for(int j = 0 ;j <= limit ;j++)MaHisto[j] = iMAOnArray(Histo,0,Length3,0,MODE_EMA,j)。

for(int m = 0 ;m <= limit ;m++)

{

if(MaHisto[m+1] 0)

{

up[m] = Open[m]-(5*Point);

if(Bars > alertBar && m == 0)

{

//Alert(Symbol()+" "+Period()+" KI LONG ",Ask).OrderSend(Symbol())を実行。

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,赤);

alertBar = Bars;

}

}

else if(MaHisto[m+1] >= 0 && MaHisto[m]< 0)

{

dn[m] = Open[m]+(5*Point);

if(Bars > alertBar && m == 0)

{

OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,Red);

alertBar = Bars;

}

}

さもなくば

{

up[m] = EMPTY_VALUE;

dn[m] = EMPTY_VALUE;

}

if( MaHisto[m] > 0 )

{

upMode[m] = High[m];

dnMode[m] = Low[m];

}

else if( MaHisto[m] < 0 )

{

dnMode[m] = High[m];

upMode[m] = Low[m];

}

return(0);

}

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

 
arsenic786:
こんにちは、MQLプログラマーの皆さん。

以下のコードを確認し、私のデモ口座でなぜこれが取引を行わないのか教えてください。GJ1mでは良いEAなのですが、残念ながら動作していません。どなたか修正し、バグのないEAとして使えるようにしていただけないでしょうか。

私は、ありがたいことに事前にしています

よろしくお願いします。

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

extern int Length1 = 3;

extern int Length2 = 10;

extern int Length3 = 16;

double ヒスト[];

double MaHisto[];

double up[];

double dn[];

double upMode[];

double dnMode[];

int alertBar;

int init()

{

return(0);

int deinit()

{

return(0);

}

int start()

{

int limit;

int counted_bars=IndicatorCounted();

if(counted_bars<0)counted_bars=0。

if(counted_bars>0)counted_bars--。

limit=Bars-counted_bars;

for(int i = 0 ;i <= limit ;i++)Histo = iMA(Symbol(),0,Length1,0,MODE_EMA,PRICE_CLOSE,i)-iMA(Symbol(),0,Length2,0,MODE_EMA,PRICE_CLOSE,i).を計算する;

for(int j = 0 ;j <= limit ;j++)MaHisto[j] = iMAOnArray(Histo,0,Length3,0,MODE_EMA,j)。

for(int m = 0 ;m <= limit ;m++)

{

if(MaHisto[m+1] 0)

{

up[m] = Open[m]-(5*Point);

if(Bars > alertBar && m == 0)

{

//Alert(Symbol()+" "+Period()+" KI LONG ",Ask).OrderSend(Symbol())を実行。

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,赤);

alertBar = Bars;

}

}

else if(MaHisto[m+1] >= 0 && MaHisto[m]< 0)

{

dn[m] = Open[m]+(5*Point);

if(Bars > alertBar && m == 0)

{

OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,Red);

alertBar = Bars;

}

}

さもなくば

{

up[m] = EMPTY_VALUE;

dn[m] = EMPTY_VALUE;

}

if( MaHisto[m] > 0 )

{

upMode[m] = High[m];

dnMode[m] = Low[m];

}

else if( MaHisto[m] < 0 )

{

dnMode[m] = High[m];

upMode[m] = Low[m];

}

return(0);

}

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

"OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,Red); "を送信します。

あなたはAsk価格で売っていますが、Bidにすべきです。

コメント欄は0ではなく、""であるべきです。

SLの25は、Bid+25*Pointでなければなりません。

TPの15はBid-15*Pointでなければなりません。

"R ed" は色ではありません。

 
Michel:
"OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,R ed); "

売値がAskになっていますが、Bidであるべきです。

コメント欄は0ではなく、""であるべきです。

SL の 25 は Bid+25*Point であるべきです。

TPの15はBid-15*Pointでなければなりません。

"R ed" は色ではありません。

サポートありがとうございました。

しかし、私はまだ問題に直面している MQLのゼロ知識。mq4ファイルにコードをコピーペーストして、デモでテストして、うまくいくかどうか教えてください。あなたのサポートは、Kindest Help Michelとしてカウントされます。

よろしくお願いします。

Kashif.

 

いや、申し訳ない、今は時間がないんだ。

数時間後、私はXmasのために私の家族のもとに戻るために船に乗る...そして、これ以上のPCはありません...。