[投稿] MQL4初學-實用子涵數篇

作者: n33222 (滿身菜味)   2017-07-21 11:37:14
我又來啦記得上次發過一個簡單的EA設計概念,這次我提供一些實用的子函數,
給大家使用,基本上都可以直接複製貼上。
廢話不多說本文開始:
一.固定風險計算手數:
有的人喜歡用金額去計算下單量,讓下單量隨著資金上漲而加大,
這邊提供一個函數達成這樣的作法。
double Lotsact()
{
double lot;
double margin = MarketInfo(Symbol(),MODE_MARGININIT);
if(固定風險開關==true)
{
lot=NormalizeDouble(AccountFreeMargin()*固定風險值/margin,2);
}
if(固定風險開關==false)
{
lot=固定手數;
}
if(lot<0.01) lot=0.01;
return(lot);
}
將這段加在程式中,記得上次說的放在ONTICK之外,
然後在下單程序中的"LOTS"欄位中,把他呼叫出來即可。
另外記得在程式開頭加上以下三段:
extern double 固定風險值 =0.01;
extern bool 固定風險開關=false;
extern double 固定手數 =0.1;
二.計算前面K棒之總和(或影線)
double swing()
{
double swing[200] ;//紀錄數組,括號中的200可任意輸入但不能小於K線數量
double swingg ;//最後輸出值
for(int i=0;i<K線數量;i++)
{
swing[i]
=MathAbs(iClose(Symbol(),PERIOD_M30,i)-iHigh(Symbol(),PERIOD_M30,i));
swingg+=swing[i]; //數組中資料相加
}
return(swingg);
}
這段程式碼是紀錄前面的實體K棒波動,做相加最後導出一個總和數值,
我本身會在下單RULE將數值導出後在除上計算的K線數量,去求出前段的實體波動。
請在程序開頭加上
extern int K線數量 =200;//你要計算的K棒數,任意輸入。
三.馬丁中的手數計算方式
馬丁算是市場上很多人愛用的,我本身是不倡導這種作法,除非你已經做出一支帶停損
停利能獲利的EA,這時候加上馬丁只是在浮虧時增加自己的獲利,我覺得這樣才有意義
馬丁正常才來說會有兩段下單程式,第一段是當場上沒有部位的第一張單,
再來是場上有多張單的加碼,我這邊就直接提供多張單加碼的手數計算方式。
double olot()
{
double adlot;
int ticket = 0;
if(CalculateCurrentOrder(Symbol()) >=1)//如果場上大於等於1
{
for(int i= OrdersTotal()-1; i>=0; i
作者: yzfr6 (扮關二哥!)   2017-07-21 13:57:00
又是子函數,講不聽
作者: k1dave6412 (朔月星痕)   2017-07-21 16:49:00
你可以打 子程式、函數、方法(針對不同程式語言而有不同稱呼) 都可以,但是沒有人打子函數…
作者: wesleytz502 (unpredictable)   2017-07-21 17:51:00
可以開Mql5的介紹嗎?
作者: n33222 (滿身菜味)   2017-07-21 18:17:00
好吧下次改進,我會這麼稱呼是因為我前陣子待在中國,教我的老師也是中國人,他都是這麼稱呼跟我說的,所以我只是仿照他的說法
作者: k1dave6412 (朔月星痕)   2017-07-21 21:25:00
中譯的問題很難解決… 除非用英文來解決,這邊應該都是用function稱呼,method會用在物件導向的程式上(Java)ea的寫法應該是用c語言,所以可以說是function
作者: n33222 (滿身菜味)   2017-07-21 23:33:00
了解感謝指導
作者: PsMonkey (痞子軍團團長)   2017-07-21 23:35:00
我在對岸也接觸過不少程序員,沒聽過子函數這種說法
作者: angrywater (angry water)   2017-07-22 01:01:00
Sub Procedure 的意思吧?只是翻譯的問題吧?MSDN: https://goo.gl/eS96We或者是 Sub Function字典(子功能、子函數): https://goo.gl/SgJMBL
作者: labdog (飛啊,飛啊, 小飛俠)   2017-07-22 01:56:00
看的懂就好,何必糾結在一個無聊的名稱。人家肯分享就要拍拍手了
作者: ohboy   2017-07-22 02:14:00
感謝分享 不用在意翻譯的事啦^_^
作者: ducati5566 (on the way!!!)   2017-07-22 13:02:00
推…意思明白就好,就好像歐巴馬/奧巴馬一樣,知道是Obama就好。何必糾結
作者: nicholasmax (1年期限已到哈哈)   2017-07-22 14:55:00
感謝提供教學期待還有其他的分享
作者: bxc (中年魯蛇聯盟)   2017-07-22 16:57:00
肯分享給推
作者: contaminate (窩4世界上ㄉ汙染)   2017-07-25 23:51:00
那些糾結名稱的人真無聊 推分享

Links booklink

Contact Us: admin [ a t ] ucptt.com