① 股票公式編程 MT4編程 請高手幫忙!!
INPUT:K1(2010,1990,3000),K2(1,1,12),K3(1,1,31);
RQ:=(K1-1900)*10000+K2*100+K3;
指定日期價:REF(C,BARSLAST(DATE<=RQ)),LINETHICK0;
漲跌幅:(C-指定日期價)/指定日期價*100,LINETHICK0;{相對於指定日期價的漲跌幅}
{漲跌幅:(C-REF(C,1))/REF(C,1)*100,LINETHICK0;}{相對於前一天的漲跌幅}
{根據條件畫區間柱子}
STICKLINE(C>指定日期價AND漲跌幅>5ANDBARSTATUS=2,指定日期價,C,8,0),COLORAA00AA;
STICKLINE(C<指定日期價AND漲跌幅<-5ANDBARSTATUS=2,指定日期價,C,8,1),COLORFFAAAA;
{下面是畫K線}
STICKLINE(C>O,H,L,0,0),COLOR5050DD;
STICKLINE(C>O,O,C,8,0),COLOR5050DD;
STICKLINE(C>O,O,C,7,0),COLOR8080DD;
STICKLINE(C>O,O,C,6,0),COLORA0A0DD;
STICKLINE(C>O,O,C,5,0),COLORC0C0DD;
STICKLINE(C>O,O,C,4,0),COLORD0D0DD;
STICKLINE(C>O,O,C,3,0),COLORF0F0FD;
STICKLINE(C>O,O,C,2,0),COLORF0F0FF;
STICKLINE(C>O,O,C,1,0),COLOREEEFFF;
STICKLINE(C<=O,H,L,0,0),COLORDDDD50;
STICKLINE(C<=O,O,C,8,0),COLORDDDD50;
STICKLINE(C<=O,O,C,7,0),COLORDDDD80;
STICKLINE(C<=O,O,C,6,0),COLORDDDD90;
STICKLINE(C<=O,O,C,5,0),COLORDDDDA0;
STICKLINE(C<=O,O,C,4,0),COLORDDDDB0;
STICKLINE(C<=O,O,C,3,0),COLORFDFDC0;
STICKLINE(C<=O,O,C,2,0),COLORFFFFE0;
STICKLINE(C<=O,O,C,1,0),COLORFCFCF9;
{標示指定日期價}
PARTLINE(指定日期價,DATE>=RQ),COLORFFAA99,DOTLINE;{畫橫虛線----指定日期價}
DRAWTEXT(BARSTATUS=2,指定日期價,NUMTOSTR(BARSLAST(DATE<=RQ))+'天前價'+NUMTOSTR(指定日期價)),COLOR00FFFF,ALIGN2;{顯示指定日期價文字}
{將如下文字復制粘貼到參數精靈
*******************************
指定以下日期
Param#1年
Param#2月
Param#3日
********************************
};
② 請教:外匯MT4的EA編程中,開倉函數OrderSend的參數講解
price就是你的購買價格,
如果你是開倉多單,那麼就是ASK價,空單則是BID價...
下廳談面扮乎碰是多單的範例:
OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, Ask - StopLoss * Point,Ask + TakeProfit * Point, "我頃雹的訂單", 12345, 0, Green);
③ MT4編程:如何把一個函數自定義返回數組
方法1:利用全局變數分析:全局變數作為C語言的一個知識點,雖然我們都了解它的特點,但在實際教學過程中應用得並不是很多。由於全局變數的作用域是從定義變數開始直到程序結束,而對於編寫有多個返回值的C語言函數,我們可以考慮把要返回的多個值定義成全局變數。當函數被調用時,全局變數被更改,我們再把更改後的全局變數值應用於主調函數中。函數被調用後被更改後的全局變數值即為函數的數個返回值。下面以一個實例演示該方法的應用。實例1:編寫函數求3個數中的最大值與最小值。方法:把最大值、最小值分別定義成2個全局變數max、min,在用戶自定義函數中把求出來的最大值與最小值分別賦給全局變數max、min。函數調用完畢後全局變數的max、min值即保存了函數要求返回的值。程序參考代碼如下:#include"stdio.h"#include"conio.h"intmax,min;/*定義兩個全局變數用於保存函數返回值*/voidmax_min(inta,intb,intc)/*定義求最大最小值的函數*/{max=min=a;/*初始化最大最小值*/if(maxif(maxif(min>b)min=b;if(min>c)min=c;}main(){intx,y,z;printf("請輸入3個整數:\n");scanf("%d,%d,%d",&x,&y,&z);max_min(x,y,z);/*調用求最大值與最小值的函數*/printf("三個數中的最大值為:%d;最小值為:%d",max,min);/*輸出最大值與最小值*/getch();}調試結果如下:請輸入3個整數:5,-6,2三個數中的最大值為:5;最小值為:-6注意:該方法雖然可以實現有多個返回值的函數,但由於全局變數不能保證值的正確性(因為其作用域是全局,所以程序范圍內都可以修改它的值,如果出現錯誤將非常難以發現),並且全局變數增加了程序間模塊的耦合,所以該方法要慎用。方法2:傳遞數組指針分析:在教學過程中,我們知道C語言函數參數的傳遞方式有值傳遞與地址傳遞。當進行值傳遞時,主調函數把實參的值復制給形參,形參獲得從主調函數傳遞過來的值運行函數。在值傳遞過程中被調函數參數值的更改不能導致實參值的更改。而如果是地址傳遞,由於傳遞過程中從實參傳遞過來的是地址,所以被調函數中形參值的更改會直接導致實參值的更改。因此,我們可以考慮把多個返回值作為數組元素定義成一個數組的形式,並使該數組的地址作為函數的形式參數,以傳址方式傳遞數組參數。函數被調用後,形參數組元素改變導致實參改變,我們再從改變後的實參數組元素中獲得函數的多個返回值。以下實例演示該方法的應用。實例2:編寫函數求一維整形數組的最大值與最小值,並把最大值與最小值返回給主調函數。方法:以指針方式傳遞該一維數組的地址,然後把數組的最大值與數組的第一個元素交換,把數組的最小值與最後一個元素交換。函數被調用完畢後,實參數組中的第一元素為數組的最大值,實參數組中最後一個元素為數組的最小值,從而實現返回數組的最大值與最小值的功能。程序參考代碼如下:#include"stdio.h"#include"conio.h"voidmax_min(int*ptr,intn)/*定義求數組最大值最小值的函數,傳遞數組指針*/{inti,j,k;/*j保存最大值所在位置,k保存最小值所在位置*/int*temp;/*用於交換位置*/*temp=*ptr;for(i=0;i{if(*ptr*(ptr+i))/*最小值與最後一個元素進行交換*/{j=i;*temp=*(ptr+n-1);*(ptr+n-1)=*(ptr+j);*(ptr+j)=*temp;}}}/*調用最大最小值函數*/main(){intA[6],i;for(i=0;i<6;i++)scanf("%d",&A[i]);max_min(A,6);printf("max=%d,min=%d\n\n",A[0],A[5]);getch();}調試結果如下:請輸入6個整形數,以空格隔開:58932-64max=32,min=-6注意:該方法適用於多個返回值的數據類型一致的情況。當返回值數據類型不一致時,不適用該方法。
④ 怎樣學習外匯MT4編程之MQL4語言學習入門
1. 首先,你得下載一個MT4平台軟體,然後打開裡面的MQL編輯器。
2. 選擇一個交易品種,注冊賬號(模擬或者真實都可以)在歷史中心下載其對應的歷史數據。
3. 在MT4官方網站上學習編程常用的語句。在MQL4 Reference開始對基本語法的學習.對於有編程基礎的人來說,這一點尤為輕松。這一階段只要了解什麼樣的內容在對應的什麼位置,便於以後查找,而不需要完全背下來,或者掌握。乾脆點的就直接翻看下即可。
4. 打開MT4中已有的MQL4代碼段,比如均線指標。對照看其中的語句,揣摩均線的邏輯意思。不懂的回到第二步中查找,或者網路之。
5. 自己學著簡單的修改均線的代碼,通過修改參數,修改變數,看看MT4中指標是怎樣改變的。
6. 然後再修改其他相關指標,學習更多變數的修改,至此,MQL4入門學習就成功了。
接下來如果要編寫難度更大的代碼,或者要編寫EA,將在後一階段再給大家介紹更詳細的學習內容。
⑤ 外匯交易必備,《MT4軟體如何使用和編程EA
首先把你的EA拷貝MT4的安裝目錄上,有一個文件夾叫Expert Advice. 拷貝到它下面,就可以在MT4軟體的列表裡頭看見你的EA了。 然後。找一個想交易的貨幣圖,拉出EA到貨幣圖上。圖上就會出現一個人臉圖標 設置交易參數,點擊開始。
⑥ mt4編程如何限制一根線剛止盈出場又進場
1、畫水平線:
首先,在MetaEditor編輯器中創建一個客戶指標文件,名字可以任意,我這里就把它命名為Lesson1_DrawLine。
然後,在其中的start()函數中添加下面的代碼:
⑦ 外匯Mt4編程自己編寫EA如何實現每隔一個時間就開一單
if (iTime(NULL,0,0)= 客戶自定義);
{
ticket_buy=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",MAGIC_MA,0,Blue);
if(ticket_buy>0)
{
billbuy_ok=true;
if(OrderSelect(ticket_buy,SELECT_BY_TICKET,MODE_TRADES))
{
Print("BUY order opened : ",OrderOpenPrice());
/* if(SL>0 && OrderStopLoss()==0)
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-SL*Point,OrderTakeProfit(),0,Green);
if(TP>0 && OrderTakeProfit()==0)
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice()+TP*Point,0,Green);
*/
}
}
else
{
billbuy_ok=false;
Print("Error opening BUY order : ",GetLastError());
}
原理大概就是這樣
⑧ MT4中,EA中怎麼平倉,不是用直接用Orderclose,而是用orderslect,orderticket,但是我的orderticket
Print(i=="訂單號碼",OrderTicket());
i==這里不對吧,
可以這樣寫,Print("i=",i," 訂單號碼=",OrderTicket());
//平倉可以用這個
if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue);
if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
⑨ mt4ea編程中如何引用自定義指標具體怎麼做
doubleiCustom(stringsymbol,inttimeframe,stringname,...,intmode,intshift)
關鍵是將引用指標的名稱寫正確,放在這個參數的位置stringname.
name後面需要把指標中的參數,按順序寫完.
後面的mode指的是引用指標裡面的第幾畫線數組,一般是0-7,最多有8個.具體每個數組代表的意義,需要從引用指標裡面找到.