到奇狐勝券首頁 奇狐社區論壇 購買奇狐勝券 試用奇狐勝券
 
論壇首頁 你可以在這裡編輯你的資料,查看短訊,訂閱主題和論壇參數等等 免費會員註冊 會員列表 論壇幫助 論壇日曆 論壇搜索 加入我的最愛 登出論壇  
奇狐社區論壇 : Powered by vBulletin version 2.3.0 奇狐社區論壇 > 指標公式 > [程式範例] > 【程式模組】符合條件發出聲響警示 New [新版本]
  上一主題   下一主題
作者
主題 發表新主題    回覆主題
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 17862

箭頭 【程式模組】符合條件發出聲響警示 New [新版本]

※此為新版本,不再使用TXT檔來做記憶保存,改寫 Windows Registry 來做記憶,可大幅提升速度!

這是一個通用的程式模組,專為發出聲響警示而設計
您只需要將本程式模組,添加在您公式程式碼的最末端
並將 BeepSel:=0; 那行配置好,即可立即享用本模組之功能

原碼:
BeepSel:=0; //請自行根據需要配置本行內容 //========================== 程式模組:符合條件發出聲響警示 Start ========================== //※此為新版本,不再使用TXT檔來做記憶保存,改寫 Windows Registry 來做記憶,可大幅提升速度! //主要功能: // 可避免條件連續成立時,不斷發出警示聲響的困擾。可按條件不同發出不同聲音 //響警時機: // 當前該交易日首次有條件成立時(BeepSel>0) // 同交易日上次運算無條件成立(BeepSel=0),而這次運算有條件成立時(BeepSel>0) // 同交易日這次運算成立的條件與上次運算成立的條件不同時(BeepSel>0 且 BeepSel新舊值不相等) //注意事項:(係指有採用此程式模組的指標公式) // 1.請勿在同一視窗中將同一個指標公式,套用在兩個圖面當中!(例如:一主圖一副圖,或兩副圖) //  將會導致響警狀態記憶混亂(即使設定的指標參數不相等也不行) // 2.若有兩個或兩個以上的視窗,觀看相同的商品且相等的週期(亦即[商品+週期]組合有重複) //  不可以將同一指標公式,同時套用在這些視窗當中,將會導致響警狀態記憶混亂 //  簡單的說:就是 [商品+週期+指標名稱] 這樣的組合必須保持唯一(不可有第二組重複的存在) //  即使指標參數不同也不行!(例如:開了兩個台積電5分線視窗,同時各自套用相同的指標公式) // 3.不同條件成立,請勿將 BeepSel 值配置為相等值,將會造成混淆,搞不清是哪一組條件發音 // ※同台電腦同時執行兩套奇狐(同版本或不同版本),採用相同指標名稱,彼此間不會發生記憶混亂 //使用方法: // 請將本程式模組,添加在原公式程式碼的最末端 // 並在本程式模組程式碼之前,添加 BeepSel 相關配置 //使用範例1:[單組條件] // 收盤價大於MA10,使用第3組音效,寫法如下: // BeepSel:=(CLOSE>MA(Close,10))*3; //使用範例2:[兩組條件:不會同時成立,各自發出不同響警] // 當KD金叉使用第1組音效,KD死叉使用第2組音效,寫法如下: // BeepSel:=Cross(K,D)*1+Cross(D,K)*2; //兩組條件不會同時成立 //使用範例3:[多組條件:各條件間皆不會有同時成立之情況,各自發出不同響警] // A用第2組音效,B用第5組音效,C用第3組音效,寫法如下: // BeepSel:=條件A*2+條件B*5+條件C*3; //A,B,C 同時間最多僅會有一個成立 //使用範例4:[各組條件間,可能會有同時成立之情況,依組合各自發出不同響警] // 例如: A,B,C 三組條件,除了單組條件成立外,亦可能會發生其中兩組甚至三組同時成立的情況 // 這種情況就不能單純的以前面的加法形式來配置 BeepSel,必須改採類似下面這樣的方法來配置: // BeepSel:=0; // BeepSel:=IF(條件A,2,BeepSel); //A用第2組音效 // BeepSel:=IF(條件B,5,BeepSel); //B用第5組音效 // BeepSel:=IF(條件C,3,BeepSel); //C用第3組音效 // BeepSel:=IF(條件A and 條件B,1,BeepSel); //A,B同時成立,用第1組音效 // BeepSel:=IF(條件B and 條件C,4,BeepSel); //B,C同時成立,用第4組音效 // BeepSel:=IF(條件A and 條件C,7,BeepSel); //A,C同時成立,用第7組音效 // BeepSel:=IF(條件A and 條件B and 條件C,6,BeepSel); //A,B,C同時成立,用第6組音效 //寫存路徑:(Windows Registry) // 最後響警狀態會被記憶寫存於 [HKEY_CURRENT_USER\Software\AeroFox R&D\_RecBeep] 中 //設定各組音效對應的檔案(共支持7組,可自行變更為您想要的) Beep1:=GetAppMainDir+'\Effwav\eff01.wav'; //第1組音效 Beep2:=GetAppMainDir+'\Effwav\eff02.wav'; //第2組音效 Beep3:=GetAppMainDir+'\Effwav\eff03.wav'; //第3組音效 Beep4:=GetAppMainDir+'\Effwav\eff04.wav'; //第4組音效 Beep5:=GetAppMainDir+'\Effwav\eff05.wav'; //第5組音效 Beep6:=GetAppMainDir+'\Effwav\eff06.wav'; //第6組音效 Beep7:=GetAppMainDir+'\Effwav\eff07.wav'; //第7組音效 //===== 以下程式碼請勿做任何更動!!! ===== RegPath:='HKEY_CURRENT_USER\Software\AeroFox R&D\_RecBeep'; //存放 Registry Path AppPath:='['+GetAppMainDir+']'+FMLNAME; for i=1 to strlen(AppPath) do begin t:=strmid(AppPath,i,1); if t='' then RegPath:=RegPath+'/' else RegPath:=RegPath+t; end; UseKEY:=RegPath+''+MarketLabel+'.'+StkLabel; //存放 KEY Name UseType:=NumToStr(DATATYPE*1000+DATATYPEM,0); //組合[數據週期類型]與[數據週期設定值] UseDate:=NumToStr(Tradedate,0); GetBeep:=0; <% BeepSel=FFL.VarData("BeepSel") UseKEY=FFL.VarData("UseKEY") UseType=FFL.VarData("UseType") UseDate=FFL.VarData("UseDate") if IsArray(BeepSel) then NowBeepSel=BeepSel(ubound(BeepSel)) else NowBeepSel=BeepSel end if OldBeepSel=0 Set WshShell=CreateObject("WScript.Shell") on error Resume Next AllData=WshShell.RegRead(UseKEY) if Err.Number=0 then DataAry=Split(AllData, ";", -1, 1): AllData="" for i=0 to ubound(DataAry) if len(DataAry(i))>0 then ItemAry=Split(DataAry(i), ",", -1, 1) if UseDate=ItemAry(0) then if UseType=ItemAry(1) then OldBeepSel=cint(ItemAry(2)) else AllData=AllData+DataAry(i)+";" end if end if end if next end if if NowBeepSel<>OldBeepSel then FFL.VarData("GetBeep")=NowBeepSel AddData=UseDate+","+UseType+","+cstr(NowBeepSel) AllData=AddData+";"+AllData WshShell.RegWrite UseKEY,AllData, "REG_SZ" %> if GetBeep>0 then begin PlayBeep:=c*0+GetBeep; PLAYSOUND(PlayBeep=1,0,Beep1); PLAYSOUND(PlayBeep=2,0,Beep2); PLAYSOUND(PlayBeep=3,0,Beep3); PLAYSOUND(PlayBeep=4,0,Beep4); PLAYSOUND(PlayBeep=5,0,Beep5); PLAYSOUND(PlayBeep=6,0,Beep6); PLAYSOUND(PlayBeep=7,0,Beep7); end; //=========================== 程式模組:符合條件發出聲響警示 End ===========================

向版主報告此篇 | 查IP位址
Old Post 2024-09-13 12:04
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
全部時間均為台灣時間, 現在時間為07:51 發表新主題    回覆主題
  上一主題   下一主題
顯示可列印版本 | 訂閱此主題

論壇跳轉:
主題評分:

論壇規定:
你不可以發表新主題
你不可以回覆文章
你不可以上傳附件
你不可以編輯自己的文章
HTML語法禁止
vB 語法核准
表情符號核准
貼圖語法[IMG]核准
 

本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。

Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.  聯絡我們