前提・実現したいこと
買いポジションを持っている時に売りの条件がみたされたら決済したい。
発生している問題・エラーメッセージ
買いポジション、売りポジションを持っている時の判別方法がわからないため思っている処理ができない。
該当のソースコード
MQL4
1#property copyright "Copyright 2020, MetaQuotes Software Corp." 2#property link "https://www.mql5.com" 3#property version "1.00" 4#property strict 5 6int OnInit() 7 { 8 return(INIT_SUCCEEDED); 9 } 10 11void OnDeinit(const int reason) 12 { 13 14 } 15 16extern int maxspread = 20;//スプレッド 17extern int closeperiod = 20;//有効期限 18extern double rot =0.1;//ロット 19 20void OnTick() 21 { 22 23 //前日足の四本値 24 double H1 = iHigh(NULL,0,1); 25 double L1 = iLow(NULL,0,1); 26 double O1 = iOpen(NULL,0,1); 27 double C1 = iClose(NULL,0,1); 28 29 //週足の四本値 30 double WH1 = iHigh(NULL,PERIOD_W1,1); 31 double WL1 = iLow(NULL,PERIOD_W1,1); 32 double WO1 = iOpen(NULL,PERIOD_W1,1); 33 double WC1 = iClose(NULL,PERIOD_W1,1); 34 35 //前週足の四本値 36 double WH2 = iHigh(NULL,PERIOD_W1,2); 37 double WL2 = iLow(NULL,PERIOD_W1,2); 38 double WO2 = iOpen(NULL,PERIOD_W1,2); 39 double WC2 = iClose(NULL,PERIOD_W1,2); 40 41 //月足の四本値 42 double MNH1 = iHigh(NULL,PERIOD_MN1,1); 43 double MNL1 = iLow(NULL,PERIOD_MN1,1); 44 double MNO1 = iOpen(NULL,PERIOD_MN1,1); 45 double MNC1 = iClose(NULL,PERIOD_MN1,1); 46 47 //前月足の四本値 48 double MNH2 = iHigh(NULL,PERIOD_MN1,2); 49 double MNL2 = iLow(NULL,PERIOD_MN1,2); 50 double MNO2 = iOpen(NULL,PERIOD_MN1,2); 51 double MNC2 = iClose(NULL,PERIOD_MN1,2); 52 53 int highestprice = iHighest(NULL,PERIOD_D1,MODE_HIGH,20,1);//最高値 54 int cheapestprice = iLowest(NULL,PERIOD_D1,MODE_LOW,20,1);//最安値 55 56 //最高値の4本値 57 double highestH = iHigh(NULL,0,highestprice); 58 double highestL = iLow(NULL,0,highestprice); 59 double highestO = iOpen(NULL,0,highestprice); 60 double highestC = iClose(NULL,0,highestprice); 61 62 //最安値の4本値 63 double cheapestH = iHigh(NULL,0,cheapestprice); 64 double cheapestL = iLow(NULL,0,cheapestprice); 65 double cheapestO = iOpen(NULL,0,cheapestprice); 66 double cheapestC = iClose(NULL,0,cheapestprice); 67 68 if(OrdersTotal() == 0)//ポジション制限 69 { 70 if(cheapestH < C1 && MarketInfo(NULL,MODE_SPREAD) < maxspread)//買いの条件とスプレッド制限 71 { 72 int Ticket = OrderSend(Symbol(),OP_BUYLIMIT,rot,cheapestH,10,cheapestL,0,NULL,1212,closeperiod,Magenta);//購入の処理 73 } 74 75 if(highestL > C1 && MarketInfo(NULL,MODE_SPREAD) < maxspread)//売りの条件とスプレッド制限 76 { 77 int Ticket = OrderSend(Symbol(),OP_SELLLIMIT,rot,highestL,10,highestH,0,NULL,1111,closeperiod,Magenta); 78 } 79 } 80 81 82 83 if(highestL > C1)//買いポジションの決済 84 { 85 bool Close = OrderClose(1111,rot,Bid,10,Magenta); 86 } 87 88 if(highestL > C1)//売りポジションの決済 89 { 90 bool Close = OrderClose(1212,rot,Ask,10,Magenta); 91 } 92 } 93
試したこと
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/07 13:20