コードの投稿にはこちらをご利用ください。.読みやすくなります。
こんにちは、一緒に。
ある期間やSLに達した後、自動的に注文をクローズすることが可能かどうか知りたいのですが...。
例えば
午後1時に取引を開始し、気配値がStopLossに達したとき、または2時間の期間が経過したときに、この注文を閉じるようにしたいです。
以下は実際のコードです。
// 買い基準
if ((TradeHour3==Hour())||(TradeHour4==Hour())||(TradeHour7==Hour())||(TradeHour10==Hour())||(TradeHour17==Hour())||(TradeHour18==Hour())||(TradeHour20==Hour()) )//シグナル・バイ
{
int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slb,tpb, "time trader buy order ", BuyMagicNumber, 0,Blue).if(openbuy<1))は、買いシグナルを送信するために使用します。
if(openbuy<1){int buyfail=1;}.
}
}// halt1
if((halt2!=1)&&(AllowSell==true)){//halt2
RefreshRates();
// 売りの基準
if ((TradeHour12==Hour())||(TradeHour23==Hour()))//シグナル売り
{
int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,sls,tps, "time trader sell order ",SellMagicNumber,0,Green)。
if(opensell<1){int sellfail=1;}.
}
}// halt2
よろしくお願いします。
マーク
// Buy criteria if ((TradeHour3==Hour())||(TradeHour4==Hour())||(TradeHour7==Hour())||(TradeHour10==Hour())||(TradeHour17==Hour())||(TradeHour18==Hour())||(TradeHour20==Hour())) //Signal Buy { int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slb,tpb,"time trader buy order ",BuyMagicNumber,0,Blue); if(openbuy<1){int buyfail=1;} } }// halt1 if((halt2!=1)&&(AllowSell==true)){// halt2 RefreshRates(); // Sell criteria if ((TradeHour12==Hour())||(TradeHour23==Hour())) //Signal Sell { int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,sls,tps,"time trader sell order ",SellMagicNumber,0,Green); if(opensell<1){int sellfail=1;} } }// halt2
期間やSLに達した後、自動的に注文を閉じることが可能かどうか知りたいのですが...。
- SLに到達すれば勝手に閉じる。
- そうでない場合は、コード化する必要があります。OrderClose()とtimeのテストはどこにあるのですか?
- SLに達すると勝手に閉じます。
- そうでなければ、コード化すればいいだけです。OrderClose()と時間のテストはどこですか?
HI WHRoeder。
ホールコードのことだと思いますが、それとも?
//---- input parameters extern double Lots=0.01; extern int TakeProfit=200; extern int StopLoss=200; extern int Slip=50; extern int BuyMagicNumber =1; extern int SellMagicNumber =2; extern bool AllowBuy=true; extern bool AllowSell=true; extern int TradeHour3=3; extern int TradeHour4=4; extern int TradeHour7=7; extern int TradeHour10=10; extern int TradeHour17=17; extern int TradeHour18=18; extern int TradeHour20=20; extern int TradeHour12=12; extern int TradeHour23=23; //+------------------------------------------------------------------+ //| expert starts | //+------------------------------------------------------------------+ int start() { //---- int StopMultd,Sleeper=1; int digits=MarketInfo("EURUSD",MODE_DIGITS); if(digits==5){StopMultd=10;} else{StopMultd=1;} double TP=NormalizeDouble(TakeProfit*StopMultd,Digits); double SL=NormalizeDouble(StopLoss*StopMultd,Digits); double Slippage=NormalizeDouble(Slip*StopMultd,Digits); // Calculate stop loss double slb=NormalizeDouble(Ask-SL*Point,Digits); double sls=NormalizeDouble(Bid+SL*Point,Digits); // Calculate take profit double tpb=NormalizeDouble(Ask+TP*Point,Digits); double tps=NormalizeDouble(Bid-TP*Point,Digits); //-------------------------------------------------------------------+ //Check open orders //-------------------------------------------------------------------+ if(OrdersTotal()>0){ for(int i=1; i<=OrdersTotal(); i++) // Cycle searching in orders { if (OrderSelect(i-1,SELECT_BY_POS)==true) // If the next is available { if(OrderMagicNumber()==BuyMagicNumber) {int halt1=1;} if(OrderMagicNumber()==SellMagicNumber) {int halt2=1;} } } } //-------------------------------------------------------------------+ if((halt1!=1)&&(AllowBuy==true)){// halt1 // Buy criteria if ((TradeHour3==Hour())||(TradeHour4==Hour())||(TradeHour7==Hour())||(TradeHour10==Hour())||(TradeHour17==Hour())||(TradeHour18==Hour())||(TradeHour20==Hour())) //Signal Buy { int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slb,tpb,"time trader buy order ",BuyMagicNumber,0,Blue); if(openbuy<1){int buyfail=1;} } }// halt1 if((halt2!=1)&&(AllowSell==true)){// halt2 RefreshRates(); // Sell criteria if ((TradeHour12==Hour())||(TradeHour23==Hour())) //Signal Sell { int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,sls,tps,"time trader sell order ",SellMagicNumber,0,Green); if(opensell<1){int sellfail=1;} } }// halt2 //-------------------------------------------------------------------+ // Error processing //-------------------------------------------------------------------+ if(buyfail==1||sellfail==1){ int Error=GetLastError(); if(Error==130){Alert("Wrong stops. Retrying."); RefreshRates();} if(Error==133){Alert("Trading prohibited.");} if(Error==2){Alert("Common error.");} if(Error==146){Alert("Trading subsystem is busy. Retrying."); Sleep(500); RefreshRates();} } // if(openbuy==true||opensell==true)Sleep(1*60*1000*Sleeper); //------------------------------------------------------------------- return(0); } //+-----------------------------------
実際には、stopplossがあるのみです。新しいバーが開かれた2時間後か、1:59:59の最後の1秒後に注文を閉じたいだけです。私の問題は、このコードを現在のものに埋め込むことです。
OrderOpenTime(最初にOrderSelectを 使用することを忘れないでください)を使用して、オープンオーダーがいつオープンされたかをチェックし、その時間をTimeCurrentと 比較して、2時間経過しているかどうかチェックします。
ただ、それをコード化する......それは本当に難しいことではありません。
もし失敗したらヒントをくれると嬉しいな ;-)
AFAIKでは、誰もが助けたいと思っていますが、誰かの奴隷になりたいわけではありません。
もちろん理解しています...私は自分のEAのために奴隷を持ちたくはありません...私が知る必要がある唯一のことは、プログラムがどのように動作するかを理解する方法です...
SMA CrossのようなシンプルなEAであれば、これは大きな問題ではありませんが、より多くのことを実現しようとすればするほど、より困難になります。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
こんにちは、一緒に。
ある期間やSLに達した後、自動的に注文をクローズすることが可能かどうか知りたいのですが...。
例えば
午後1時に取引を開始し、気配値がStopLossに達したとき、または2時間の期間が経過したときに、この注文を閉じるようにしたいです。
以下は実際のコードです。
// 買い基準
if ((TradeHour3==Hour())||(TradeHour4==Hour())||(TradeHour7==Hour())||(TradeHour10==Hour())||(TradeHour17==Hour())||(TradeHour18==Hour())||(TradeHour20==Hour()) )//シグナル・バイ
{
int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slb,tpb, "time trader buy order ", BuyMagicNumber, 0,Blue).if(openbuy<1))は、買いシグナルを送信するために使用します。
if(openbuy<1){int buyfail=1;}.
}
}// halt1
if((halt2!=1)&&(AllowSell==true)){//halt2
RefreshRates()を実行。
// 売りの基準
if ((TradeHour12==Hour())||(TradeHour23==Hour()))//シグナル売り
{
int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,sls,tps, "time tradersell order",SellMagicNumber,0,Green)。
if(opensell<1){int sellfail=1;}.
}
}// halt2
よろしくお願いします。
マーク