COCO研究院

 找回密碼
 註冊
搜索
12
返回列表 發新帖
樓主: ashell

[請益]停損的程式碼如何寫?

[複製鏈接]
發表於 11-1-18 11:28 | 顯示全部樓層
回復 15# ashell

ashell

可以貼圖來看嗎@@
很想看看你的圖片是怎樣的
我剛剛試用之後,完全沒反應
下單大師那邊也是一樣@@
這部份還真需要跟你請益一下。
 樓主| 發表於 11-1-18 11:42 | 顯示全部樓層
回復 16# frantz

frantz大:沒有圖喔,那個程式碼只有寫出
1、收盤價大於8000進場
2、左上角有顯示buystop、sellstop、bought、sold這些數值
3、識別碼是test,所以下單大師的識別碼也要是test才能收到單子
以上,您看看如果還有問題,再跟我說。
發表於 11-1-18 14:24 | 顯示全部樓層
我這邊試了之後@@
amibroker沒有出現買賣訊息,下單大師那邊也沒有任何訊息接收到@@
 樓主| 發表於 11-1-19 00:09 | 顯示全部樓層
謝謝舞太極大的告知,

找到問題出在哪了,不過再來還要找解決的方法,

因為在一開始設定變數值有指定初使值0,

而在程式全部執行完畢後又從頭開始執行,

這時候滿足買進條件時值被設為1的bought的值又被設為0了,

所以導致原本取得的停損值又被重新設定了一次,

知道問題出在那裏,再來就是要想辦法讓變數的值的初始化只執行一次,

明天想想看要怎麼寫,如果有大大知道怎麼寫的話也請跟小弟說一聲,謝謝。


  1. //初始化下單大師
  2. OMComAPI = CreateStaticObject("OMSignAPI.OMCOMAPI");
  3. OMComAPI.IniDllAndPosition("test", 0);

  4. //設定停損的變數
  5. Buystop=0;
  6. Sellstop=0;
  7. //設定手上是否有單的變數
  8. bought =0;
  9. sold=0;

  10. //加入這一行可以看出值又變為零了
  11. Plot(bought,"\nbought",colorGreen,styleownscale|stylenolabel);

  12. //因為要馬上就可以進場,所以用收盤價大於8000為進場滿足條件
  13. if (LastValue(C>8000) AND bought == 0 )
  14. {
  15. NowDateTime=Now(0);
  16. NowPosition = 1;
  17. NowClose=LastValue(Close);
  18. OMComAPI.GoOrder("test","","NowDateTime",Nowposition,Nowclose);
  19. Buystop=Nowclose-10;
  20. Sellstop=0;
  21. bought=1;
  22. sold=0;
  23. }

  24. //收盤前平倉,或是滿足停損價則平倉
  25. if (LastValue(TimeNum())==134000  OR LastValue(Close)==Buystop OR LastValue(Close)==Sellstop)
  26. {
  27. NowDateTime=Now(0);
  28. NowPosition = 0;
  29. NowClose=LastValue(Close);
  30. OMComAPI.GoOrder("test","","NowDateTime",NowPosition,NowClose);
  31. Buystop=0;
  32. Sellstop=0;
  33. bought=0;
  34. sold=0;
  35. }

  36. //把停損價和是否有倉位顯示出來,以便觀察
  37. Plot(Sellstop,"\nsellstop",colorGreen,styleownscale|stylenolabel);
  38. Plot(Buystop,"\nbuystop",colorYellow,styleownscale|stylenolabel);
  39. Plot(bought,"\nbought",colorGreen,styleownscale|stylenolabel);
  40. Plot(sold,"\nsold",colorGreen,styleownscale|stylenolabel);
複製代碼
發表於 11-1-20 08:36 | 顯示全部樓層
看來問題是出在你沒有把變數存起來,
如果不關ab就重跑的話,請考慮用StaticVarSet跟StaticVarGet來做,
如果是關ab後重跑的話,請參考底下這篇
http://www.amibroker.org/userkb/2007/04/24/persistent-variables/
 樓主| 發表於 11-1-20 08:50 | 顯示全部樓層
回復 20# cjlin


   收到,謝謝告知,目前才處理到沒有關ab的重跑而已,
就已經搞不定了,壓根就沒想到還有關ab重跑的問題,

本來想說只要設個變數就可以解決停損設定的問題

以為很簡單就可以解決,想不到這麼複雜,

當然和自己的不熟練也有關係,

不過在處理的過程中一直學到新的東西,

也很開心,只是對被我麻煩的幾位大大不好意思就是了。
發表於 11-1-20 21:59 | 顯示全部樓層
ashell收獲不少喔@@
裡面不少高手潛水中@@
今天又看了一篇完全不了解的文章
看來又需要花時間消化掉了
 樓主| 發表於 11-1-20 23:04 | 顯示全部樓層
對啊,寫程式寫不出來真的蠻難受的,
還好有版上的高手可以求助,
真是太感謝幫助過我的各位大大了。
發表於 11-3-26 19:45 | 顯示全部樓層
好棒的文章

忍不住想真誠的站起來替你鼓掌
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-12-23 02:05

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |