請問如何編寫MT4 快速修改多筆單停利(損)價位的腳本?
快速修改停損停利點
使用方式:
1、打開欲更改的貨幣對圖表
2、雙擊腳本,輸入參數SL(停損)、TP(停利)。例如SL設為30,代表停損點和現價,差了30點。如果SL設為0,則代表移除停損點。
3、確認後,此貨幣對所有在倉的單(不含掛單),會全部更改停損、停利點。
請問如何編寫MT4 快速修改多筆單停利(損)價位的腳本?
補充內容 (12-3-11 21:25):
#property copyright "Copyright ?2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property show_confirm
extern intSL=30;
extern intTP=0;
//+----------------------- #property copyright "Copyright ?2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property show_confirm
extern intSL=30;
extern intTP=0;
//+------------------------------------------------------------------+
//| script "modify first market order" |
//+------------------------------------------------------------------+
int start()
{
bool result;
double stop_loss,Take_profit,point;
int cmd,total,error;
//----
total=OrdersTotal();
point=MarketInfo(Symbol(),MODE_POINT);
//----
for(int i=0; i<total; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
//---- print selected order
OrderPrint();
cmd=OrderType();
//---- buy or sell orders are considered
if(cmd==OP_BUY || cmd==OP_SELL)
{
//---- modify first market order
while(true)
{
if(cmd==OP_BUY) stop_loss=Bid-SL*point;
else stop_loss=Ask+SL*point;
if(cmd==OP_BUY) Take_profit=Bid-TP*point;
else Take_profit=Ask+TP*point;
result=OrderModify(OrderTicket(),0,stop_loss,Take_profit,0,CLR_NONE);
if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
else error=0;
if(error==135) RefreshRates();
else break;
}
//---- print modified order (it still selected after modify)
OrderPrint();
break;
}
}
else { Print( "Error when order select ", GetLastError()); break; }
}
//----
return(0);
}
//+------------------------------------------------------------------+
請高手指導修正!! mjlee 發表於 12-3-11 21:28 static/image/common/back.gif
#property copyright "Copyright ?2004, MetaQuotes Software Corp."
#property link "http://www.met ...
程式邏輯 不對
當 停損 停利點數=0 時
就不對了
無無明 發表於 12-3-13 12:40 static/image/common/back.gif
程式邏輯 不對
當 停損 停利點數=0 時
程式邏輯修正:
1、打開欲更改的貨幣對圖表。
2、雙擊腳本,輸入參數SL(停損)、TP(停利)。
例如SL輸入為30,代表停損點和現價,差了30點。
如果SL(停損)輸入為0,則代表不設止損。
如果TP(停利)輸入為0,則代表不設獲利。
3、確認後,此貨幣對所有在倉的單(不含掛單),會全部更改停損、停利點。
感謝無無明老師的指導修正!! 感覺有點難的程式語法
比mc難多了呵 mjlee 發表於 12-3-14 14:00 static/image/common/back.gif
程式邏輯修正:
1、打開欲更改的貨幣對圖表。
2、雙擊腳本,輸入參數SL(停損)、TP(停利)。
if(cmd==OP_BUY) stop_loss=你的成本 - SL*point;
if(cmd==OP_SELL)stop_loss=成本 + SL*point;
if(cmd==OP_BUY) Take_profit=成本 + TP*point;
if(cmd==OP_SELL)Take_profit=成本 - TP*point;
result=OrderModify(OrderTicket(),0,stop_loss,Take_profit,0,CLR_NONE);
這是 屬於 固定 點數 停損停利 的 模式
至於 追蹤折頭,要另外寫。
感謝老師教導及分享!!
頁:
[1]