⑴ MT4 編程問題,專家進,謝謝
if語句的格拍宴式是
if()
{
}
你的錯誤在於,你沒有把李仿IF後面的襲擾銀語句用大括弧括起來.
正確的應該是這樣:
datetime time=0;
if(time!=Time[0])
{
OrderSend(Symbol(),OP_BUY,0.2,Ask,200,Ask-1500*Point,Ask+5000*Point,Symbol()+"Buy",0,0,Blue);
OrderSend(Symbol(),OP_SELL,0.1,Bid,200,Ask+1500*Point,Ask-5000*Point,Symbol()+"sell",0,0,Red);
time=Time[0];
}
⑵ 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 是什麼語言 編的
C語言編的,MT5是C++編的,MT4裡面內嵌的自動化交易編程模塊也是一種類似C語言的編程語言,所以如果學過C語言,就對MT4裡面的MQL自動化交易編程語言很容易上手
⑷ mt4編程如何限制一根線剛止盈出場又進場
1、畫水平線:
首先,在MetaEditor編輯器中創建一個客戶指標文件,名字可以任意,我這里就把它命名為Lesson1_DrawLine。
然後,在其中的start()函數中添加下面的代碼:
⑸ mt4編程,我想寫個掛個空單函數,但是用OP_SELLLIMIT沒有反應,用OP_BUYLIMIT掛多單就可以,請指教
一、例如:kc=200、lots=0.01都要給賦值才行,還有好漏衫搭幾個參數都沒賦值。
二、if 條件中這個OrderType()==OP_SELLLIMIT條件是什麼意思,返拿塌巧有這個限價買單了,為什麼還要開一個同樣的掛單?
⑹ 求助,MT4編程達人請進來指導MACD面積指標
你說的兩條線的macd應該是雙線MACD指標。MT4平台自帶有MACD。但是大家普遍都用雙線MACD。下載雙線MACD安裝包(如果沒有可以網路一下外匯中文服務商通匯國際索取),將「雙線MACD.mq4」和「雙線MACD.ex4」,放到MT4的文件夾的experts的子文件夾「indicators」文件夾裡面。打開MT4軟體,然後在「插入」選項中,選擇「技術指標」——>「自定義」——>「雙線MACD技術指標」,就可以成功的調用MT4的雙線MACD指標了。備註:MACD意思為平滑異同移動平均線,是許多外匯交易員、股票交易員和期貨交易員在判斷未來走勢所依據的一種重要的參考方法,主要是利用長短期的二條平滑平均線,計算兩者之間的差離值,作為研判行情買賣之依據。
⑺ mt4 編程 滿足任意一個條件怎麼寫
OrderProfit()可以檢測持倉單的盈利衫判情況,對所有持倉單寫個循環,將每個單的盈利如塌核情況加起來就知道總體的情況了。
下單手數每次翻渣掘倍,可以用下面的公式:Lot=0.01*2^n,n代表持倉的單數。
⑻ MT4編程請高手幫助
我來免費幫你吧!等著。。。
我去試試,弄好了,告訴你!毀弊
流下你的郵箱宴察,我傳給你。
呵呵!這簡單的東西,還要什麼錢啊?暈纖祥族眩。
祝你愉快!
⑼ 怎樣學習外匯MT4編程之MQL4語言學習入門
1. 首先,你得下載一個MT4平台軟體,然後打開裡面的MQL編輯器。
2. 選擇一個交易品種,注冊賬號(模擬或者真實都可以)在歷史中心下載其對應的歷史數據。
3. 在MT4官方網站上學習編程常用的語句。在MQL4 Reference開始對基本語法的學習.對於有編程基礎的人來說,這一點尤為輕松。這一階段只要了解什麼樣的內容在對應的什麼位置,便於以後查找,而不需要完全背下來,或者掌握。乾脆點的就直接翻看下即可。
4. 打開MT4中已有的MQL4代碼段,比如均線指標。對照看其中的語句,揣摩均線的邏輯意思。不懂的回到第二步中查找,或者網路之。
5. 自己學著簡單的修改均線的代碼,通過修改參數,修改變數,看看MT4中指標是怎樣改變的。
6. 然後再修改其他相關指標,學習更多變數的修改,至此,MQL4入門學習就成功了。
接下來如果要編寫難度更大的代碼,或者要編寫EA,將在後一階段再給大家介紹更詳細的學習內容。
⑽ 請教外匯 MT4編程
你不用編程序了,MT4平台自帶這個指標,它的名字叫「Fractals」(也叫分形指標),在指標菜單的「比爾 威廉姆」子菜單里
另外,你可以參考比爾·威廉姆寫的《混沌操作法》這本書了解更多有關分形的概念和使用方法