코딩하는 방법? - 페이지 179

 
Roger09:
Alpari 계정에서 여러 번 시도했지만 실수는 없었습니다. 한 번만, 내가 전문가 디렉토리에 스크립트를 넣고 EA로 실행할 때.

디렉토리에 대해 질문했기 때문입니다.

죄송합니다.

문제를 파악한 것 같아요. 저는 Windows Vista를 사용 중이며 일반적으로 "관리자 권한으로 실행"합니다. 나는 그것을하지 않고 그것을 시도했고 지금은 잘 작동하는 것 같았습니다.

 

MT4 .mq4에서 C++ DLL로 배열 전달

도움이 필요합니다.

8개의 표시기 값을 포함하는 단일 배열을 C++ DLL에 전달하는 데 문제가 있습니다. 그것은 매우 간단하지만 전화를 걸 때 -1을 얻는 것 같습니다.

DLL에서 가져온 함수 gepModel( d [] )을 실제로 호출하는 Forexindex() 함수 . ForexIndex 함수는 DLL에서 0 또는 1을 반환해야 합니다.

Forexindex() 의 .mq4 파일에서 뭔가 잘못하고 있는 것 같습니다. 도움을 주시면 감사하겠습니다. 아래는 간단한 코드입니다. C++ DLL 파일은 문제 없이 오류 없이 잘 컴파일되므로 mq4 파일에 문제가 있습니다.

==================================================================== ====

#import "JadeClass.dll"

int gepModel( 더블& d[] );

#수입

정수 시작()

{

........

........

........

외환 인덱스();

.......

......

......

.....

}

int ForexIndex()

{

int myindex;

이중 ind[], MA_Close, MA_High, MA_Low, MA_Open, Macd, Rsi, Stoch, Vol;

int counted_bars=IndicatorCounted();

if (counted_bars<0) return(-1);

if (counted_bars>0) counted_bars--;

int pos=바 수 계산된_바;

MA_Close = iMA(NULL,PERIOD_M5,8,0,0,0,0) ;

MA_High = iMA(NULL,PERIOD_M5,8,0,0,0,0) ;

MA_Low = iMA(NULL,PERIOD_M5,8,0,0,0,0) ;

MA_Open = iMA(NULL,PERIOD_M5,8,0,0,0,0) ;

Macd = iMACD(NULL,PERIOD_M5,12,26,9,0,0,0);

Rsi = iRSI(NULL,PERIOD_M5,10,0,0);

확률 = iStochastic(NULL,PERIOD_M5,14,3,3,0,0,0,0);

볼륨 = iVolume(NULL,PERIOD_M5,0);

동안(위치>=0)

{

ind[0] = MA_닫기;

ind[1] = MA_높음;

ind[2] = MA_낮음;

ind[3] = MA_Open;

ind[4] = Macd;

ind[5] = Rsi;

ind[6] = 스토크;

ind[7] = Vol;

myindex = gepModel(ind);

포스--;

}

Print( " Myindex = " , myindex);

반환(myindex);

}

============================DLL 소스 코드 ====================== =====

#include "stdafx.h"

#include "JadeClass.h"

#포함하다

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

#define MT4_EXPFUNC __declspec(dllexport)

// 유일한 CJadeClassApp 객체

CJadeClassApp 앱;

MT4_EXPFUNC int __stdcall gepModel(이중 d[]);

MT4_EXPFUNC int __stdcall gepModel(이중 d[])

{

.....

.....

.....

.....

}

================================================================================================ ====

; JadeClass.def : DLL에 대한 모듈 매개변수를 선언합니다.

라이브러리 "JadeClass"

수출

; 명시적 내보내기는 여기로 갈 수 있습니다.

gep 모델

==========================================

 

신호당 하나의 거래에 대해서만 코드를 추가하는 데 도움이 필요합니다.

저는 mq4 코드를 배우고 있으며 신호당 하나의 거래만 코딩하는 방법을 알아내려고 많은 시간을 보냈습니다. 몇 가지 방법을 시도했지만 하나의 거래를 만들 수 없습니다. 예를 들어 TP에 도달하면 신호가 여전히 양호하기 때문에 다른 동일한 측면 거래를 할 것입니다. 역 신호가 올 때까지 기다렸다가 해당 거래를 시작하고 싶습니다. 변경 사항 없이 여기에 EA를 첨부했습니다. 도움을 주셔서 미리 감사드립니다. 마티

파일:
 
martypatty:
저는 mq4 코드를 배우고 있으며 신호당 하나의 거래만 코딩하는 방법을 알아내려고 많은 시간을 보냈습니다. 몇 가지 방법을 시도했지만 하나의 거래를 만들 수 없습니다. 예를 들어 TP에 도달하면 신호가 여전히 양호하기 때문에 다른 동일한 측면 거래를 할 것입니다. 역 신호가 올 때까지 기다렸다가 해당 거래를 시작하고 싶습니다. 변경 사항 없이 여기에 EA를 첨부했습니다. 도움을 주셔서 미리 감사드립니다. 마티

한 막대에서 너무 많은 열린 거래에 문제가 발생한 후 mql4.com에서 최근에 이 작업을 수행하는 방법을 찾았습니다. mql4의 기사는 처음에 많은 도움이 되었으며 작업하기에 좋은 예제를 제공하는 코드 데이터베이스가 있습니다. 여전히 이 웹사이트는 훌륭한 게시물 기록과 몇몇 정말 좋은 코더를 보유하고 있습니다. 검색 기능을 사용하고 게시물로 표시되는 버튼을 클릭하기만 하면 필요한 답변에 대해 주제의 페이지와 페이지를 훑어볼 필요가 없습니다. 귀하의 문제에 관해서는 다음 코드를 사용하십시오.

int BarsCount=0;

if(Bars<BarsCount)

{

//Code to do once goes here

BarsCount=Bars;

}

[/CODE]

Personally I'm having problems with an array. I cant for the life of me figure out why the following code returns 0 all the time... Any help would be much appreciated. I'm trying to create an array of length STD_MA_Period+1 to later use with iMAOnArray but it doesnt work so its back to the drawing board I guess.

[CODE]for(i=0;i<=STD_MA_Period+1;i++)

{

STD_MA_Buffer=iStdDev(Symbol(),Period(),STD_Period,0,MODE_SMA,PRICE_CLOSE,i);

}

Print(STD_MA_Buffer[1]);

PS 이중 STD_MA_Buffer[]; 전역 변수 섹션에 정의되어 있습니다.

 

제 EA를 고쳐주세요

나는 약간의 아이디어가 있지만 mql4 코드에 쓸 수 있습니다. 도와주실 수 있나요???

이것은 내 문제

이것은 내 시스템 정의입니다.

A. 주문=0인 경우 >> OP 매수 && OP 매도

B. + 또는 - 조건으로 그리드 만들기

전. OPbuy + 그리드 = OPbuy인 경우

OPbuy - 그리드 = OPsell인 경우

OPsell도 마찬가지입니다.

C. 이익 > 0 && 이익 > 최소 이익인 경우 ( 이익 고정 )

모든 주문을 중지하고( OP Buy || OP Sell ) 후행 주식 또는 이익 포인트 이동

D. 주식 또는 포인트로 할 수 있는 이익으로 마감

내 잘못이 어디 있는지 알고 싶기 때문에 E. .mq4 형식

B 지점에 문제가 있습니다. 도와주세요.

 
mazgen:
나는 약간의 아이디어가 있지만 mql4 코드에 쓸 수 있습니다. 도와주실 수 있나요???

이것은 내 문제

이것은 내 시스템 정의입니다.

A. 주문=0인 경우 >> OP 매수 && OP 매도

B. + 또는 - 조건으로 그리드 만들기

전. OPbuy + 그리드 = OPbuy인 경우

OPbuy - 그리드 = OPsell인 경우

OPsell도 마찬가지입니다.

C. 이익 > 0 && 이익 > 최소 이익인 경우 ( 이익 고정 )

모든 주문을 중지하고( OP Buy || OP Sell ) 후행 주식 또는 이익 포인트 이동

D. 주식 또는 포인트로 할 수 있는 이익으로 마감

내 잘못이 어디 있는지 알고 싶기 때문에 E. .mq4 형식

B 지점에 문제가 있습니다. 도와주세요.

ex4 대신 소스 코드를 보내는 것은 어떻습니까?

 
figurelli:
ex4 대신 소스 코드를 보내는 것은 어떻습니까?

코딩하는 방법을 알려주세요.

이것은 나의 마지막 세부사항Statement

이것을 수정하십시오.rar

내 EA, OP의 루프가 판매하는 문제를 파악할 수 있기를 바랍니다.

 

추세선 질문

코딩이 처음이고 연습을 위해 일을 하는 저는 현재 막대에서 추세선을 멈추고 싶었습니다. 내가 생각해낸 것은 단순히 현재 막대의 색상을 배경색으로 변경하는 것이었습니다. 본질적으로 막대를 지나는 선을 배경으로 혼합하고 그 지점에서 사라지게 만듭니다.

그래서 이제 전문가들에게 올바른 방법이 무엇인지 물어봅니다. 나는 같은 일을 성취할 수 있는 많은 방법이 있다는 것을 알고 있기 때문에 더 많은 것을 배우기 위해 내가 할 수 있었던 일에 대한 다른 아이디어를 찾고 있습니다.

감사해요

 

매우 이상한 MQL 코드 동작

모두들 안녕,

메타트레이더 버전: 4.00 빌드 224(2009년 5월 15일)

메타에디터 버전: 4.00 빌드 224(2009년 5월 14일)

MQL에서 매우 이상한 버그를 만나 완전히 당황했습니다. 그래서 이 문제를 피하기 위해 작성되었는지 확인하기 위해 모든 이전 코드를 다시 살펴보고 있습니다.

누군가 여기에서 정확히 무슨 일이 일어나고 있는지 밝힐 수 있기를 바랍니다.

다음은 본질적으로 아무 것도 하지 않는 간단한 지표인 코드입니다. 그러나 init() 섹션에서 차트 기간이 H1일 때 2개의 함수를 호출했습니다.

두 기능은 한 가지 점을 제외하고는 모두 동일합니다. 하나에는 정적 int 배열이 정의되어 있고 다른 하나에는 비정적 int 배열이 정의되어 있습니다. 모든 함수가 하는 일은 지역적으로 정의된 배열의 크기를 출력하고 배열 요소에 일부 값을 할당한 다음 출력하는 것입니다.

#property indicator_chart_window

void afunc() {

int i;

int array[4];

array[0] = 100;

array[1] = 101;

array[2] = 102;

array[3] = 103;

Print("afunc array[4] size="+ArraySize(array));

for (i = 0; i < 4; i++) {

Print("afunc array["+i+"]="+array);

}

}

void afunc_static() {

int i;

static int array[4];

array[0] = 100;

array[1] = 101;

array[2] = 102;

array[3] = 103;

Print("afunc_static array[4] size="+ArraySize(array));

for (i = 0; i < 4; i++) {

Print("afunc_static array["+i+"]="+array);

}

}

int init() {

if (Period() == PERIOD_H1) {

afunc();

afunc_static();

}

return(0);

}

int deinit() {

return(0);

}

int start() {

return(0);

}

코드를 보면 두 기능이 서로 다르게 동작하는 상황이 있어서는 안 됩니다.

그러나 지표를 M5 차트에 첨부한 다음 H1 기간으로 전환하면 다음과 같은 결과가 나타납니다.

2009.05.23 18:12:47 afunc EURUSD,H1: initialized

2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static 배열[3]=103

2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static 배열[2]=102

2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static 배열[1]=101

2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static 배열[0]=100

2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static 배열[4] 크기=4

2009.05.23 18:12:47 afunc EURUSD,H1: afunc 배열[3]=0

2009.05.23 18:12:47 afunc EURUSD,H1: afunc 배열[2]=0

2009.05.23 18:12:47 afunc EURUSD,H1: afunc 배열[1]=0

2009.05.23 18:12:47 afunc EURUSD,H1: afunc 배열[0]=0

2009.05.23 18:12:47 afunc EURUSD,H1: afunc 배열[4] 크기=0

2009.05.23 18:12:47 afunc EURUSD,M5: 단위 이유 3

2009.05.23 18:12:47 afunc EURUSD,M5: 초기화 해제

2009.05.23 18:12:45 afunc EURUSD,M5: 초기화

2009.05.23 18:12:43 afunc EURUSD,M5: 성공적으로 로드됨

afunc()에서 'int array[4]'를 정의했지만 해당 배열의 크기는 실제로 0이고 배열 요소에 값을 할당할 수 없습니다. 이 기능은 분명히 예상대로 작동하지 않습니다.

afunc_static()에서 'static int array[4]'를 정의했으며 배열의 요소에 할당한 값과 마찬가지로 크기가 4로 올바르게 표시됩니다. 이 기능은 잘 작동합니다.

결론. 함수에서 비정적 배열을 정의하고 해당 함수가 표시기에 의해 호출되지 않으면 문제가 발생할 수 있습니다.

이후에 차트 시간 프레임 을 전환한 다음 함수를 호출하면 함수에서 로컬로 정의된 배열의 크기는 배열의 크기를 정의한 것과 상관없이 0이 됩니다.

내가 볼 수있는 한이 문제를 해결하는 유일한 방법은 함수에서 로컬로 정의 된 배열이 정적 배열로 정의되어 있는지 확인하는 것입니다. 나는 알고 있지만 문제를 피할 다른 방법을 볼 수 없습니다.

이 문제에 대한 피드백을 주시면 정말 감사하겠습니다.

문안 인사,

로렌스.

파일:
afunc.mq4  1 kb