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

 

iCCIに関する質問

MQL4は初めてなのですが、以前のCCI値を取得しようとしています。iCCI関数を Shiftの値を1にして使ってみましたが、以前の値を得ることができません。現在の値を変数に保存せずに、どのようにすればいいのでしょうか?CCIの方向性を判断したいのです。

よろしくお願いします。

 

このコードはティックベースなので、もしその時間にティックがなければ、コードは時間のチェックを ミスすることになります。何らかのループを継続的に走らせないと正確な秒にならないと思うのですが。

 

EA編集のヘルプ

私はこれを理解しようとしている...あなたは助けてくださいすることができますか?

MBトレーディング - 株式 オプション 先物 外国為替 オンライン割引取引

私はこれを変更しました。

OrderSend(Symbol(),OP_SELL,mylotsi,SellPrice,slippage,sl,tp, "MyMEFx EA "+MagicNumber,MagicNumber,0,Arrow sColor).を変更しました。

return(0);

へ。

int ticket = OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,0,0, "MyMEFx EA "+MagicNumber,MagicNumber,0,Arrow sColor);

Sleep(1500);

OrderModify(ticket,OrderOpenPrice() ,sl,tp,0,ArrowsColor);

=================================== ======

こんなエラーが出ます。

2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify 関数のための無効なチケットです。

2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderSend エラー 131

2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify error 4051

=====================

 
coach3131:
これを理解しようとしているのですが、助けていただけますか?

MBトレーディング - 株式 オプション 先物 外国為替 オンライン割引取引

これを変更しました。

OrderSend(Symbol(),OP_SELL,mylotsi,SellPrice,slippage,sl,tp, "MyMEFx EA "+MagicNumber,MagicNumber,0,Arrow sColor).を変更しました。

return(0);

へ。

int ticket = OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,0,0, "MyMEFx EA "+MagicNumber,MagicNumber,0,Arrow sColor);

Sleep(1500);

OrderModify(ticket,OrderOpenPrice() ,sl,tp,0,ArrowsColor);

=================================== ======

こんなエラーが出ます。

2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify 関数のための無効なチケットです。

2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderSend エラー 131

2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify error 4051

=====================

あなたの問題は、注文送信ステートメントのロットサイズ(数量)にあります。これは、エラーのため -1 を返します。次に、ticket 変数の戻り値をチェックして、ordermodify ルーチンを呼び出す前に、エラー・フラグが含まれていないことを確認する必要があります。

ケイト

 

EA マックスポジション

このEAに最大ポジションを追加することはできますか?

または1つのポジションのみを実行させることができますか?

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

 

次のようにします。

MathAbs(NormalizeDouble(Bid,4)-NormalizeDouble(pivot,4))<Delta*Point,

ここで、デルタ=2...5

 
jdun:
誰かストップロスとTPのコードを教えてください。このEAにそれを追加する必要があります。

この隠されたSLとTP

int TakeProfit=20; // 20 pips take profit

int StopLoss =40; // 40 pips stoploss

int Slippage = 3;

int MagicNumber=1;

int i;

int start(){

//----- exit @ TP

if((ScanTrades()>=1)&& (ProfitInPips()>=TakeProfit)){

//----- This part will close all open orders and delete pending trades

for(i = OrdersTotal()-1; i >=0; i--)

{ OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

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

{

if (OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Plum);

if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Plum);

if (OrderType() == OP_SELLLIMIT) OrderDelete(OrderTicket());

if (OrderType() == OP_BUYLIMIT) OrderDelete(OrderTicket());

if (OrderType() == OP_BUYSTOP) OrderDelete(OrderTicket());

if (OrderType() == OP_SELLSTOP) OrderDelete(OrderTicket());

}

}

}

//------exit @ SL

if((ScanTrades()>=1)&& (ProfitInPips()<= -StopLoss)){

//----- This part will close all open orders and delete pending trades

for(i = OrdersTotal()-1; i >=0; i--)

{ OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

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

{

if (OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Plum);

if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Plum);

if (OrderType() == OP_SELLLIMIT) OrderDelete(OrderTicket());

if (OrderType() == OP_BUYLIMIT) OrderDelete(OrderTicket());

if (OrderType() == OP_BUYSTOP) OrderDelete(OrderTicket());

if (OrderType() == OP_SELLSTOP) OrderDelete(OrderTicket());

}

}

}

return (0);

}

//----------- Call functions

int ScanTrades()

{

int Tot = OrdersTotal();

int Numb = 0;

for(int cnt=0; cnt<=Tot-1; cnt++)

{

OrderSelect(cnt, SELECT_BY_POS);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) Numb++;

}

return(Numb);

}

double ProfitInPips()

{

RefreshRates();

double Prof=0;

int i;

int totalOrders=OrdersTotal();

for(i=0;i<totalOrders;i++)

{

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

if(OrderMagicNumber()==MagicNumber)

{

if(OrderType()==0)

{

Prof+=(MarketInfo(OrderSymbol(),MODE_BID)-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);

}

if(OrderType()==1)

{

Prof+=(OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_ASK))/MarketInfo(OrderSymbol(),MODE_POINT);

}

}

}

return(Prof);

}

 

いくつかの買い注文と売り注文 があるとします。

私は何をしたいです。

- すべての取引「バスケット」を未決済取引の損益分岐点価格より5ピップス高い価格で終了させる。

最初のループでやろうとしていることは、オープントレード+スワップの値を求め、それをpipsに変換することです。

私はいくつかのアイデアを試してみましたが、私は行き止まりに達している、私は問題が最初のfor文であることを知っているが、私はそれを解決することはできません、任意のヘルプは非常に充当されます。

SymbolPL = 0;

OrdLots = 0;

Equity = 0;

MinPro = 5;

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

{OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

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

{if(OrderType() == OP_BUY) OrdLots += OrderLots();

if(OrderType() == OP_SELL) OrdLots -= OrderLots();

Equity += OrderProfit() + OrderSwap();

}

}

MinPro= MathRound (MathAbs(Equity /OrdLots)+MinPro);

//--- Count the open trades

int i;

int count=0;

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

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

if(OrderMagicNumber()==MagicNumber && OrderType()<2)

{ count++;

}

}

//--- find the profit in pips of the open trades

RefreshRates();

double profits=0,openPrice=0,points=0;

string sym="";

int i;

int totalOrders=OrdersTotal();

for(i=0;i<totalOrders;i++)

{

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

if(OrderMagicNumber()==MagicNumber)

{

sym=OrderSymbol();

openPrice=OrderOpenPrice();

if(OrderType()==0)

{

profits+=(MarketInfo(sym,MODE_BID)-openPrice)/MarketInfo(sym,MODE_POINT);

}

if(OrderType()==1)

{

profits+=(OrderOpenPrice()-MarketInfo(sym,MODE_ASK))/MarketInfo(sym,MODE_POINT);

}

}

}

//--- Close when the open trades are 5 pips more than the breakeven price

if (count>1 && profits>MinPro )

{

for(i = OrdersTotal()-1; i >=0; i--)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

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

{

OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Plum);

}

}

}

 

と計算される「equity_per_lotpoint」定数を使えばいいと思います。

double equity_per_lotpoint = MarketInfo( Symbol(), MODE_TICKVALUE ) / MarketInfo( Symbol(), MODE_TICKSIZE );

[/PHP]

and then you'd have what you need after the first loop, with:

[PHP]if ( Equity > 5 * equity_per_lotpoint * MathAbs( OrdLots ) ) { ...

 

ラルフさん、ありがとうございます。でも、スワップがなくなってしまうので、スワップ損益を注文の終値に含めたいのです。