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

 

複数取引の管理

皆さん、こんにちは。

私は、理論的には無限の取引を行うことができ、各取引のために管理するEAを開発しようとしています。

  1. トレーリングストップ
  2. BEへの移動
  3. ATR-トレイリングストップ
  4. などです。

swiss armyやmanageTPのようなEAがこれを行えることは知っています。方法がわかりません。

何か提案はありますか?

 

損失が発生した後に取引を停止するコードを書くのに助けが必要です。

こんにちは。

私は、エキスパートが1つの損失の後、または2つまたは3つの連続した損失の後に特定の時間数のために取引を停止するようにコードを記述する必要があります。

どなたか助けていただけませんか?

 

マーチングルのヘッジを閉じた状態でのコード化

こんにちは、チーム。

私は以下の私の戦略のソリューションに私を提供することができますコードを求めていきたいと思います。

マーチングルのコンセプト

TP = 23ピップ

ピップギャップ = 20

OP買いEU 0.1,0.2,0.4,0.8,1.6ロット

1. もし1,6ロットのレイヤーが-20pips以上浮いたら、OPは12.8ロットでEUを売る(TP23)。

2. 12.8ロットがTPにヒットしたら、EUのポジションを全てクローズ。

3. 12.8lot pip=0の場合、Sell EUのポジションのみをクローズします。

4. 条件に該当する場合、1から3までの状況をもう一度繰り返す。

関数と コードについて私に助言するためにあなたの好意を必要としています。

 

コーディングの質問

今、このコードは、現在のオープニングが前のバーよりも高いかどうかを確認 することによって動作します。私の質問は、それが前のバーより高いか、または等しいかどうかを確認したい場合は、どのようにそれを変更するのですか?

if(Open[0] > Open[0+1] && (Open[0+1] > Open[0+1] &&)

Open[0+1] > Open[0+2] && (Open[0+2]> Open[0+3] &&)

Open[0+2]> Open[0+3] && (Open[0+3] > Open[0+3] &&)

Open[0+3]>Open[0+4] &&(英語)。

オープン[0+5] > オープン[0+6])注文 = SIGNAL_SELL

このように、大なり記号の横に = > を付ければいいのでしょうか?

ありがとうございます。

 

を試してみてください。

if(Open[0] => Open[0+1] &&

Open[0+1] => Open[0+2] &&

Open[0+2]=> Open[0+3] &&

Open[0+3] => Open[0+4] &&

Open[0+4] => Open[0+5] &&

Open[0+5] => Open[0+6]) Order = SIGNAL_SELL

 

リバースエキスパートアドバイザーシグナル

ハイ

ちょうどこの専門家顧問のまわりで遊んでいる

#property copyright "FORTRADER.RU"

#property link "http://FORTRADER.RU"

/*

????????? ???????? ?????????? ????????? ???????? ? ?????? ??????? ?? 26 ??? 2008,

??????????? ? ?????? ?? ????? ???? ?????? ? ????? ????????????: letters@fortrader.ru

http://www.fortrader.ru/arhiv.php

A detailed description of the parameters adviser available issue of the journal dated May 26 2008,

suggestions and feedback we will be glad to see in our e-mail: letters@fortrader.ru

http://www.fortrader.ru/arhiv.php

*/

extern string x="????????? MACD:";

extern int FastEMA = 12;

extern int SlowEMA = 24;

int SignalEMA = 9;

extern int predel = 6;

extern string x1="????????? MA:";

extern int SMA1 = 50;

extern int SMA2 = 100;

extern int otstup = 10;

extern string x2="???????? ????? ??? ??????? ????-???? :";

extern int stoplossbars = 6;

extern string x3="??????????? ??? ??????? ?????? ?????? ? ???????? ???????? ???????:";

extern int pprofitum = 2;

extern string x4="?????? ?? ADX:";

extern int enable = 0;

extern int periodADX = 14;

extern double Lots=1;

datetime Bar;int buy,sell,i,a,b;double stoploss,setup2,adx,okbuy,oksell;

int start()

{

buy=0;sell=0;

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY){buy=1;}

if(OrderType()==OP_SELL){sell=1;}

}

//????????? ??????????

double macd =iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_MAIN,1);

double sma1 =iMA(NULL,0,SMA1,0,MODE_SMA,PRICE_CLOSE,1);

double sma2 =iMA(NULL,0,SMA2,0,MODE_SMA,PRICE_CLOSE,1);

if(Close[1]<sma2){okbuy=1;}

if(Close[1]>sma2){oksell=1;}

if(enable==1)

{

adx=iADX(NULL,0,14,PRICE_CLOSE,MODE_MAIN,0);

}else{adx=60;}

if(Close[1]+otstup*Point>sma1 && Close[1]+otstup*Point>sma2 && macd>0 && buy==0)

{

buy=0;

for( i=predel;i>0;i--)

{

macd=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_MAIN,i);

if(macd<0){buy=2;}

}

if(buy==2 && adx>50 && okbuy==1)

{okbuy=0;

double stoploss=Low;

OrderSend(Symbol(),OP_BUY,Lots,Ask,3,stoploss,0,0,16385,0,Green);

a=0;

}

}

if(Close[1]-otstup*Point<sma1 && Close[1]-otstup*Point<sma2 && macd<0 && sell==0)

{

sell=0;

for( i=predel;i>0;i--)

{

macd=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_MAIN,i);

if(macd>0){sell=2;}

}

if(sell==2 && adx>50 && oksell==1)

{oksell=0;

stoploss=High;

OrderSend(Symbol(),OP_SELL,Lots,Bid,3,stoploss,0,0,16385,0,White);

b=0;

}

}

if(buy==2 || buy==1)

{

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY )

{

double setup2=OrderOpenPrice()+((OrderOpenPrice()-OrderStopLoss())*pprofitum);

if(Close[1]>setup2 && a==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,White);

OrderClose(OrderTicket(),OrderLots()/2,Bid,3,Violet);

a=1;

}

if(a==1 && sma1> Close[1]-otstup*Point)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

}

}

}

}

if(sell==2 || sell==1)

{

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_SELL )

{

setup2=OrderOpenPrice()-((OrderStopLoss()-OrderOpenPrice())*pprofitum);

if(Close[1]<setup2 && b==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,White);

OrderClose(OrderTicket(),OrderLots()/2,Ask,3,Violet);

b=1;

}

if(b==1 && Close[1]-otstup*Point> sma1)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);

}

}

}

}

return(0);

}

どのように私は買い、売り注文を 逆にするのですか...カントはそれが動作するようになる

 

OP_BUYをOP_SELLに逆変換するだけで、右のコードラインに逆方向のアクションが表示されます。

 
oneg:
を試してみてください。

if(Open[0] => Open[0+1] &&

Open[0+1] => Open[0+2] &&

Open[0+2]=> Open[0+3] &&

Open[0+3] => Open[0+4] &&

Open[0+4] => Open[0+5] &&

Open[0+5] => Open[0+6]) Order = SIGNAL_SELL

それはうまくいかなかったが、>記号の後に=記号を置くとうまくいった。こんな感じで。

if(Open[0] >= Open[0+1] && (Open[0+1] >= Open[0+2] && (Open[0+2] &&))

Open[0+1] >= Open[0+2] && (Open[0+2] >= Open[0+3] &&)

Open[0+2]>= Open[0+3] && (Open[0+3] >= Open[0+3] &&)

オープン[0+5] >= オープン[0+6])注文 = SIGNAL_SELL

 

このコードでは、トレーリングストップが45pipsに設定されています。しかし、トレーリングストップは45pips動くまで有効化されないようです。取引が行われたときにトレーリングストップが有効になるようにするには、どのように変更する必要がありますか?

extern string Remark1 = "== Main Settings ==";

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = true;

extern double Lots = 4;

extern int Slippage = 2;

extern bool UseStopLoss = false;

extern int StopLoss = 100;

extern bool UseTakeProfit = false;

extern int TakeProfit = 15;

extern bool UseTrailingStop = true;

extern int TrailingStop = 45;

extern bool MoveStopOnce = False;

extern int MoveStopWhenPrice = 50;

extern int MoveStopTo = 1;

extern int MaxConcurrentTrades = 2;

//Version 2.01

int BarCount;

int Current;

bool TickCheck = False;

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

//| expert initialization function |

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

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

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

//| expert deinitialization function |

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

int deinit() {

return(0);

}

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

//| expert start function |

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

int start()

{

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Order = SIGNAL_NONE;

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

//| Variable Begin |

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

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

//| Variable End |

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

//Check position

bool IsTrade = False;

for (int i = 0; i < Total; i ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {

IsTrade = True;

if(OrderType() == OP_BUY) {

//Close

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

//| Signal Begin(Exit Buy) |

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

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

//| Signal End(Exit Buy) |

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

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

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

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

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

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

} else {

//Close

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

//| Signal Begin(Exit Sell) |

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

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

//| Signal End(Exit Sell) |

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

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

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

if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

}

}

}

 

リバースエキスパートアドバイザーの信号

1 Expert Advisorのいくつかのコードを変更するには、Skypeで誰もが私を助けることができる

私は非常に良いものを見つけた可能性があります。

私のスカイプは: ctzulu

どうもありがとうございます