 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18113 |
回覆: [求救]多空交易寫法
引用: 最初由 Markchu7 發表
研究了論壇上多空交易的寫法還是不太懂(沒有學過程式撰寫,所以搞不懂迴圈),想要套用又不盡相同,能否請求協助?如下:
多進(多單進場已自行完成);
空進(空單進場已自行完成);
空進價:REF(C,BARSLAST(空進));
空停損:空進價+15;
多進價:REF(C,BARSLAST(多進));
多停損:多進價-15;
請求協助:
1.一次進場2口部位;
2.30點停利1口;
3.停損,現有部位出場,並保持空手.
4.反向訊號,現有部位出場,並反手進場2口.
5.同向訊號忽略.
感謝!
原碼:
多進:=多進 or barpos=0;
空進:=空進 or barpos=0;
進場:=多進-空進;
停利值:=30;
控損值:=15;
CC:=C; 進出:C*0 linethick;
DoBS:C*0 NOAXIS;
多空:=0; //n.多 -n.空 0.無
for i=1 to datacount do begin
if 多空=0 then begin
多空:=進場[i]*2;
if 多空<>0 then begin
進價:=CC[i]; 進出[i]:=SGN(多空); StopS:=0;
end;
end else if 多空<>0 then begin
NowDir:=SGN(多空);
if NowDir=-進場[i] then begin
多空:=-NowDir*2; //反手
進價:=CC[i]; StopS:=0; 進出[i]:=-SGN(多空)*4;
end else begin
盈虧:=(CC[i]-進價)*NowDir;
if 盈虧>=停利值 and StopS=0 then begin
多空:=多空-NowDir; 進出[i]:=SGN(多空)*2; StopS:=1;
end else if 盈虧<=-控損值 then begin
進出[i]:=SGN(多空)*3; 多空:=0;
end;
end;
end;
DoBS[i]:=多空;
end;
[進出] 這變數值代表
1.多進, 2.多停利, 3.多控損, 4.多轉空
-1.空進, -2.空停利, -3.空控損, -4.空轉多
[DoBS] 為該根動作完後的口數
|
|
向版主報告此篇 |  |
|
2013-03-15 17:33 |
|
|
|  |
 |
Markchu7
資深會員
註冊日期: Nov 2007
來 自:
文章數量: 1501 |
感謝總版主的指導!經研讀後,再請解惑!
盈虧:=(CC[i]-進價)*NowDir;
1.以上源碼是以'收'作計算(不知對否?),能否改為以'高','低'做計算?
2.期貨以點數停利,控損很OK!但股票若是改採百分比(停利5%,控損2.5%),或是HHV(H,3) AND LLV(L,3)來做計算,要如何寫?再次有勞總版主,感恩!
|
最後由 Markchu7 在 2013-03-16 01:32 編輯 |
向版主報告此篇 |  |
|
2013-03-16 01:29 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18113 |
引用: 最初由 Markchu7 發表
感謝總版主的指導!經研讀後,再請解惑!
盈虧:=(CC[i]-進價)*NowDir;
1.以上源碼是以'收'作計算(不知對否?),能否改為以'高','低'做計算?
2.期貨以點數停利,控損很OK!但股票若是改採百分比(停利5%,控損2.5%),或是HHV(H,3) AND LLV(L,3)來做計算,要如何寫?再次有勞總版主,感恩!
以HL計盈虧, 範例如下:
原碼:
多進:=多進 or barpos=0;
空進:=空進 or barpos=0;
進場:=多進-空進;
停利值:=30;
控損值:=15;
CC:=C; HH:=H; LL:=L;
進出:C*0 linethick;
DoBS:C*0 NOAXIS;
多空:=0; //n.多 -n.空 0.無
for i=1 to datacount do begin
if 多空=0 then begin
多空:=進場[i]*2;
if 多空<>0 then begin
進價:=CC[i]; 進出[i]:=SGN(多空); StopS:=0;
end;
end else if 多空<>0 then begin
NowDir:=SGN(多空);
if NowDir=-進場[i] then begin
多空:=-NowDir*2; //反手
進價:=CC[i]; StopS:=0; 進出[i]:=-SGN(多空)*4;
end else begin
損HL:=LL[i]*(NowDir=1)+HH[i]*(NowDir=-1);
盈HL:=HH[i]*(NowDir=1)+LL[i]*(NowDir=-1);
Max盈:=(盈HL-進價)*NowDir;
Max虧:=(損HL-進價)*NowDir;
if Max虧<=-控損值 then begin
進出[i]:=SGN(多空)*3; 多空:=0;
end else if Max盈>=停利值 and StopS=0 then begin
多空:=多空-NowDir; 進出[i]:=SGN(多空)*2; StopS:=1;
end;
end;
end;
DoBS[i]:=多空;
end;
把點數換算成%數是不難的
給您自己試著換算看看
|
|
向版主報告此篇 |  |
|
2013-03-19 10:24 |
|
|
|  |
本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。
|
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved. 聯絡我們
|