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

 

...

ランタイムスプレッドにはこれを使用します。

double currentSpread = MarketInfo(Symbol().MODE_SPREAD);
Premeus:
EA内でリアルタイムにスプレッドを表示させたいのですが、何かアドバイスがあればお願いします。
 

マルデンをありがとうございます。しかし、私はWebサーバーのためのPHPのコードを知っている。 私はサイドEAでコーディングすることを知らない。またはそれは他の人のために立っている。

もっと具体的に教えてください。私はMQL4プログラミングの初心者です。

また、新値が入ったときにどの部分がどのように実行されるのかがわかりません。

プログラム全体なのか、init()の中なのか、start()の中なのか。

このスレッドで質問したように、ティック情報を取得して表示したいのですが。

 

プレマス

これはメタトレーダーMQl4のコードで、現在のシンボルのスプレッドを取得するものです。これをあなたのコードにコピーすれば、その方法でスプレッド情報を取得することができます。

このコードの行は、各ティックで スプレッドをチェックするために、start()の中にあるべきです(各ティックで変化する可能性があるため)。MarketInfo()関数を呼び出し、currentSpread変数に値が代入されたら、currentSpreadをテストや必要な処理に使用する。

Premeus:
マルデンに感謝します。しかし、私はWebサーバーのためのPHPのコードを知っている。 私はサイドEAでコーディングすることを知らない。またはそれは他の人のために立っている。

もっと具体的に教えてください。私はMQL4プログラミングの初心者です。

また、新しい価格が入ってきたときに、プログラムのどの部分がどのように実行されたのかがわかりません。

プログラム全体なのか、init()の中なのか、start()の中なのか。

このスレッドで質問しているような、ティック情報、表示が欲しいです。
 

MartingailExpert_v1.0_Stochastic, how?

こんにちは。

注文送信チケットにStoplossを挿入できないのですが、なぜでしょうか?

それを挿入すると、EAが動作しません

ありがとうございます。

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

//| aaa.mq4 |

//| Copyright Š 2007, MetaQuotes Software Corp.|

//|TeamWox Groupware / MetaQuotes Software Corp.

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

#property copyright "Copyright Š 2007, MetaQuotes Software Corp."(著作権)。

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

extern double step=25;

extern int StepMode=0;

// Ĺ StepMode = 0, ňî řŕă ěl_13A↩ćä îđäl_13A↩đŕěč ôčęńčíűé č đl_155↩âl_13Aí steep

// Ĺ StepMode = 1, ňî řŕă ďîńĺíí óâl_155↩ďĺ̈

extern double proffactor=10;

extern double mult=1.5;

extern double lotbuy=0.01;

extern double lotssell=0.01;

extern double per_K=200;

extern double per_D=20;

extern double slow=20;

extern double zoneBUY=20;

extern double zoneSELL=80;

extern double Magicbuy=555;

extern double Magicsell=556;

double openpricebuy,openpricesell,lotsbuy2,lotssell2,lastlotbuy,lastlotsell,tpb,tps,cnt,smbuy,smsell,lotstep.All rights reserved,

ticketbuy、tetsell、maxLot、free、balance、lotsell、lotbuy、dig、sig_buy、sig_sell、ask、bid。

int OrdersTotalMagicbuy(int Magicbuy)

{

int j=0;

int r

for (r=0;r<OrdersTotal();r++)

{

if(OrderSelect(r,SELECT_BY_POS,MODE_TRADES))

{

if (OrderMagicNumber()==Magicbuy)j++。

}

}

return(j);

}

int OrdersTotalMagicsell(int Magicsell)

{

int d=0;

int n;

for (n=0;n<OrdersTotal();n++)

{

if(OrderSelect(n,SELECT_BY_POS,MODE_TRADES))

{

if (OrderMagicNumber()==Magicsell)d++。

}

}

return(d);

}

int orderclosebuy(int ticketbuy)

{

文字列 symbol = Symbol();

int cnt;

for(cnt = OrdersTotal(); cnt >= 0; cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == symbol && OrderMagicNumber() ==Magicbuy)

{

ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES);lotsbuy2=OrderLots() ;

double bid = MarketInfo(symbol,MODE_BID);

RefreshRates();

OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta)を実行します。

}

}

lotsbuy2=lotsbuy;return(0);

}

int orderclosesell(int ticketsell)

{

文字列 symbol = Symbol();

int cnt;

for(cnt = OrdersTotal(); cnt >= 0; cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == symbol && OrderMagicNumber()==Magicsell)

{

ticketsell=OrderTicket();OrderSelect(ticketsell, SELECT_BY_TICKET, MODE_TRADES);Lotssell2=OrderLots() ;

double ask = MarketInfo(symbol,MODE_ASK);

RefreshRates();

OrderClose(ticketsell,lotssell2,ask,3, Lime);

}

}

lotssell2=lotssell;return(0)。

}

int start()

{

//----

double profitbuy=0;double profitsell=0;

string symbol = OrderSymbol();

double spread = MarketInfo(symbol,MODE_SPREAD);

double minLot = MarketInfo(symbol,MODE_MINLOT)。

if (minLot==0.01){dig=2;maxLot=MarketInfo(symbol,MODE_MAXLOT);}; if (minLot=0.01){dig=2;maxLot=MarketInfo(symbol,MODE_MAXLOT);}.

if (minLot==0.1){dig=1;maxLot=((AccountBalance()/2)/1000);}.

if(OrdersTotalMagicbuy(Magicbuy)>0)

{

double smbuy;

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

{

OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);

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

{

ticketbuy = OrderTicket();OrderSelect(ticketbuy,SELECT_BY_TICKET, MODE_TRADES);

smbuy = smbuy+OrderLots();openpricebuy = OrderOpenPrice();lastlotbuy = OrderLots();

}

}

{

if (smbuy+(NormalizeDouble((lastlotbuy*mult),dig))<maxLot)

{

if(StepMode==0)

{

if(Ask<=openpricebuy-step*Point)とする。

{

lotsbuy2=lastlotbuy*mult;

RefreshRates();ticketbuy=OrderSend(Symbol(),OP_BUY,NormalizeDouble(lotsbuy2,dig),Ask,3,0,0, "MartingailExpert", Magicbuy,0,blue).を送信する;

}

if(StepMode==1)

{

if(Ask<=openpricebuy-(step+OrdersTotalMagicbuy(Magicbuy)+OrdersTotalMagicbuy(Magicbuy)-2)*ポイント)

{

lotsbuy2=lastlotbuy*mult;

RefreshRates();ticketbuy=OrderSend(Symbol(),OP_BUY,NormalizeDouble(lotsbuy2,dig),Ask,3,0,0, "MartingailExpert", Magicbuy,0,blue).を送信します。

}

}

}

}

}

if(OrdersTotalMagicsell(Magicsell)>0)

{

double smsell;

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

{

OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);

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

{

ticketsell = OrderTicket();OrderSelect(ticketsell,SELECT_BY_TICKET, MODE_TRADES).OrderSelect(ticketsell,SELECT_BY_TICKET, MODE_TRADES);

smsell = smsell + OrderLots();openpricesell = OrderOpenPrice();lastlotsell = OrderLots();

}

{

if (smsell+(NormalizeDouble((lastlotsell*mult),dig))<maxLot)

{

if(ステップモード=0)

{

if(Bid>=openpricesell+step*Point)

{

lotssell2=lastlotsell*mult;

RefreshRates();ticketsell=OrderSend(Symbol(),OP_SELL,NormalizeDouble(lotssell2,dig),Bid,3,0,0, "MartingailExpert", Magicsell,0,Red).を送信します。

}

}

if(StepMode==1)

{

if(Bid>=openpricesell+(step+OrdersTotalMagicsell(Magicsell) +OrdersTotalMagicsell(Magicsell)-2)*ポイント)

{

lotssell2=lastlotsell*mult;

RefreshRates();ticketsell=OrderSend(Symbol(),OP_SELL,NormalizeDouble(lotssell2,dig),Bid,3,0,0, "MartingailExpert", Magicsell,0,Red).を送信する;

}

}

}

}

}

シグナルの生成方法を変更するために、 //xm7 を修正しました。旧コードは末尾にあります。

double Stoch_0 = iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,0,0);

double Stoch_1 = iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,0,1)。

if(OrdersTotalMagicbuy(Magicbuy)<1))。

{

if(Stoch_0 > zoneBUY && Stoch_1 <= zoneBUY)

ticketbuy = OrderSend(Symbol(),OP_BUY,lotsbuy,Ask,3,0,0, "MartingailExpert", Magicbuy,0,Blue).If(OrdersTotalMagicbuy(Magicbuy),0,0)。

}

if(OrdersTotalMagicsell(Magicsell)<1))。

{

if(Stoch_0 = zoneSELL)

ticketell = OrderSend(Symbol(),OP_SELL,lotssell,Bid,3,0,0, "MartingailExpert",Magicsell,0,Red);

}

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

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

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

{

ticketbuy = OrderTicket();OrderSelect(ticketbuy,SELECT_BY_TICKET, MODE_TRADES);profitbuy = profitbuy+OrderProfit() ;

openpricebuy = OrderOpenPrice()。

}

}

tpb = (OrdersTotalMagicbuy(Magicbuy)*proffactor*Point)+openpricebuy。

double bid = MarketInfo(Symbol(),MODE_BID);

if (profitbuy>0)

{

if (Bid>=tpb) orderclosebuy(ticketbuy);

}

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

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

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

{

ticketsell = OrderTicket();OrderSelect(ticketsell,SELECT_BY_TICKET, MODE_TRADES);profitsell = profitsell+OrderProfit().Openpricesell = OrderOrderProfit().OpenPricesell = OrderOrderProfit().OpenPricesell = OrderOrderProfit();

openpricesell = OrderOpenPrice();

}

}

tps = openpricesell-(OrdersTotalMagicsell(Magicsell)*proffactor*Point);

double ask = MarketInfo(Symbol(),MODE_ASK);

if (profitsell>0)

{

if (Ask<=tps)orderclosesell(tetsell)。

}

free = AccountFreeMargin();balance = AccountBalance();

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

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderSymbol()==Symbol() && OrderMagicNumber () == Magicbuy) ticketbuy = OrderTicket().If (OrderSymbol()==Symbol() && OrderMagicNumber () == Magicbuy) ticketbuy = OrderTicket();

if (OrderSymbol()==Symbol() && OrderMagicNumber () == Magicsell) ticketsell = OrderTicket(); if (OrderSymbol()==Symbol() && OrderMagicNumber () == Magicsell) ticketsell = OrderTicket();

}

if (OrdersTotalMagicbuy(Magicbuy)==0)(オーダー総数)

{

profitbuy=0;ticketbuy=0;tpb=0;

}

if (OrdersTotalMagicsell(Magicsell)==0)の場合。

{

profitsell=0;ticketsell=0;tps=0;

}

Comment("FreeMargin = ",NormalizeDouble(free,0)," Balance = ",NormalizeDouble(balance,0)," maxLot = ",NormalizeDouble(maxLot,dig),"\n".Of.OrdersTotalMagicbuy = ",OrdersTotalMagicbuy(Magicsell) = ",NormalizeDouble(Free,0)," ³")

"Totalbuy = ",OrdersTotalMagicbuy(Magicbuy)," Lot = ",smbuy," Totalsell = ",OrdersTotalMagicsell(Magicsell)," Lot = ",smsell," \n",

"---------------------------------------------------------------","\n","Profitbuy = ",profitbuy,"\n",

"Profitsell = ",profitsell);

//----

for(int ii=0; ii<2; ii+=2)

{

ObjectDelete("rect "+ii)。

ObjectCreate("rect "+ii,OBJ_HLINE, 0, 0,tps);

ObjectSet("rect "+ii, OBJPROP_COLOR, Red);

ObjectSet("rect "+ii, OBJPROP_WIDTH, 1); ObjectSet("rect "+ii, OBJPROP_WIDTH, 1);

ObjectSet("rect "+ii, OBJPROP_RAY, False);

}

for(int rr=0; rr<2; rr+=2)

{

ObjectDelete("rect1"+rr).ObjectCreate("rect1"+rr)。

ObjectCreate("rect1"+rr,OBJ_HLINE, 0, 0,tpb);

ObjectSet("rect1"+rr, OBJPROP_COLOR, Blue); ObjectSet("rect1"+rr, OBJPROP_COLOR, Blue);

ObjectSet("rect1"+rr, OBJPROP_WIDTH, 1); ObjectSet("rect1"+rr, OBJPROP_WIDTH, 1);

ObjectSet("rect1"+rr, OBJPROP_RAY, False);

}

return(0);

}
 

...

いくつかの理由が考えられますが、最も一般的なものは次のとおりです。

- ストップロスやテイクプロフィットが 現在の価格に近すぎる。

- あなたのブローカーがECN/STPタイプのブローカーで、その場合、まずストップロスとテイクプロフィットを0に設定して注文を出す必要があり、注文が開かれたときに初めてストップロスとテイクプロフィットを希望の値に変更できます(もちろん、前のポイントに従いますが)。

pearl1:
こんにちは。

なぜOrder send ticketにStoplossを挿入できないのか、どなたか教えていただけませんか?

それを挿入すると、EAが動作しません。

ありがとうございます。
 

皆さんこんにちは。私はそのnoob知っているが、私は答えを見つけることができないようです。どうか助けてください。ありがとうございます。

ありがとうございます。

テランス

 

...

どちらかです.

- 現在の買値はBid

- 現在の売呼値はAsk

- その他の価格:現在の価格にはインデックスゼロを使用します。つまり、Close[0]は現在の終値、Open[0]は現在の始値、といった具合です。

tkuan77:
皆さんこんにちは。私はそのnoobを知っているが、私は答えを見つけることができないようです。どうか助けてください。ありがとうございました。

リーガル

テランス
 

Mladenさん、私がやろうとしているのは、チェック です。例えば、現在の価格がSMA100の上にある場合、私はより低い時間枠にズームダウンし、買いシグナルだけを見ることになります。しかし、BidやAskを使用する場合、Bidはロング、Askはその逆であるため、システムは現在ロングかショートかを判断できません(間違っていたら訂正してください)。

私が考えていたコンセプトは、チェック部分の3つのアヒルの取引システムに似ているところがあります。ここでアドバイスをお願いします。ありがとうございます。

よろしくお願いします。

テランス

mladen:
現在の買値はBid

、現在の売値はAsk

、それ以外の価格は0を使用するため、Close[0]は現在の終値、Open[0]は現在の始値、といった

具合になります。
 

...

テランス

その場合はClose[0]を使ってください。ほとんどのEAがCloseを使っているので、それでいけると思います。

tkuan77:
こんにちは、Mladenさん、私がやろうとしているのはチェックです。例えば、現在の価格がSMA100の上にある場合、私はより低い時間枠にズームダウンし、買いシグナルだけを見ます。しかし、BidやAskを使用した場合、Bidはロング、Askはその逆であるため、システムは現在ロングかショートかを判断できません(間違っていたら訂正してください)。

私が考えていたコンセプトは、チェック部分の3つのアヒルの取引システムに似ているところがあります。こちらもアドバイスお願いします。ありがとうございました。

リガーズ

テランス
 

EAが値動きする間に動作しない

M1タイムフレームで、EAが値動きの間に実行されないことに気づきました。EAはティックが 入るたびに実行されることは知っています。

しかし、私はそれが新しいバーを開始するたびに実行されているのを見ました。

私は誤解しているのでしょうか?

ティックが入るたびに強制的にEAを起動させる方法はありますか?

私は利益と損失をピップではなく、利益と損失 を使ってコントロールしようと思っています。 スパイクが発生したとき、EAは新しいバーが発生するまで利益または損失の設定に到達したときに注文を閉じません。

どなたかこの問題を解決する方法を教えてください。

私はEAのコーディングのために新しいです。

事前にありがとうございます。