g.pociejewski: [lang=pl]시간이 GMT인지 아닌지에 대한 추가 질문이 있습니까? GMT가 아닌 경우 이 EA에서 약간의 변경을 가할 것입니다.
방금 만들었습니다. 모든 것이 정상이면 확인하십시오.
낮고 높은 stopLoss와 TP i 사이의 거리가 외부 변수로 만들어졌습니다.
건배 Grzesiek.[/lang]
친애하는 그제지크
이 표시기를 전문가 폴더에 붙여넣고 오늘 어떻게 작동하는지 알아보기 위해 모니터링했습니다. 문제는 일단 첫 번째 거래를 하고 정지 또는 t/p에서 주문을 닫으면 즉시 EA가 최근 주문을 마감한 가격으로 다시 거래를 시작한다는 것입니다. 코드에서 어떻게 멈출 수 있습니까? 감사해요
이 코드에는 한 가지 문제가 있습니다. 거래를 실행할 때는 OK지만 주문을 다시 닫으면 EA는 이전 주문이 마감된 가격과 시간에 새로운 거래를 엽니다. 코드에서 오류를 보지 못했습니다. 이 글을 쓴 사람은 매우 바쁘고 온라인 상태가 아닙니다. 누구든지 문제가 무엇인지 제안 할 수 있습니까?
이제 EA는 하루에 한 자리만 엽니다. 이메일에 대한 귀하의 질문을 참조하면 포럼의 어딘가에 내 게시물이 있습니다. :)
찾으면 알려주십시오.
건배,
그르제식[/lang]
고마워요,
여기에 전체 코드를 복사해서 mq4 파일에 붙여넣었는데 Experts 폴더에 복사하면 작동이 안되고 ex4 파일도 생성되지 않고 Experts Advisors 메뉴에도 뜨지 않습니다. 그래서 mq4 파일처럼 업로드할 수 있습니까? 아니면 코드에 어떤 것이 있습니까? 제가 여러 번 시도했기 때문입니다.
GMT 02:00에서 10:00 사이의 범위가 60핍 미만일 때 거래한 다음 공개 판매 IF 가격이 최소 5핍 라인을 돌파하거나 가격이 최대 + 5핍 라인을 돌파하면 매수합니다. 그리고 하루에 한 번만 거래를 실행하세요. 거래가 중지된 상태에서 취소되거나 하루에 한 번만 주문 하여 이익 을 얻는 것은 중요하지 않습니다.
여기에 코드가 있지만 작동하지 않습니다. MT4의 EA MANU에는 비활성화 아이콘이 있고 전문가 폴더에 ex4 파일이 없습니다. 무엇이 잘못되었는지 이해할 수 없습니다.
난 바보야 이것을 잘못된 포럼에 게시했는데... 프로그래밍 포럼으로 옮기는 방법을 모르겠습니다. 불편을 드려 죄송합니다. 실수는 의도하지 않았다.
저는 3년 동안 현물 외환 거래를 했으며 2개의 EA를 개발했습니다. 이 EA는 Glocap, FXCM 및 Alpari에서 잘 실행됩니다(저는 미국 거주자이므로 브로커 선택이 다소 제한됨). 또한 스프레드에 커미션이 내장된 MT4 계정을 원합니다(개인 취향).
저는 최근에 Forex.com(Gain Capital) 데모 계정에서 이 EA를 테스트했습니다. 두 EA 모두 잘 작동했고 프로그래밍된 규칙에 따라 거래되었습니다. 그러나 Forex.com에서 라이브 계정을 개설했을 때 EA #1은 더 이상 제대로 작동하지 않지만 EA #2는 제대로 작동합니다. EA #1은 Forex.com 전략 테스터에서 잘 작동하지만 그다지 중요하지 않다는 것을 알고 있습니다. 두 EA 모두 동일한 코드를 사용하여 거래를 시작하고(거래를 열려고 할 때 EA #1의 오류가 발생함), 로트 크기를 설정하고, 거래를 모니터링하고, 거래를 마감하기 때문에 이 모든 것이 제게는 매우 이상합니다. 다음은 두 EA에 대한 정보입니다.
EA #1 EUR/JPY Ichimoku 표시기 사용
EA #2 EUR/USD 3 이동 평균 및 MACD 사용
전에 말했듯이 EA #2는 잘 거래됩니다. 프로그램된 규칙에 따라 작동합니다. EA #1이 일부 거래를 열려고 하면 다음 오류 메시지가 나타납니다. 2011.11.21 17:00:02 Ichimoku_1700Eastern EURJPYpro,H1: Ichimoku_Open EA for EURJPYpro: BUY 주문 열기 오류: (133) trade is disabled /// for 103.7210
또한 EA #2가 거래를 시도할 때 Experts 로그는 항상 오류가 발생하는 거래 직전에 std.lib가 로드됨을 보여줍니다(EA #1에서는 발생하지 않음):2011.11.21 17:00: 02 stdlib EURJPYpro,H1: 성공적으로 로드됨
이 퍼즐의 마지막 조각은 다음과 같습니다. EA #2는 거래를 열지만 1700 동부에서는 열지 않습니다. 던져진 모든 오류는 1700 Eastern에서 시작하려고 시도하는 거래에서 발생했습니다(이것은 우연의 일치일 수 있음).
EA를 찢어버렸습니다. 코드를 처음부터 다시 입력했습니다. EA #1에서 EA #2로 코드를 복사했는데 문제가 해결되지 않는 것 같습니다. Forex.com은 그들이 제공하지 않는 이 "EA 지원"을 고려하기 때문에 도움을 주고 싶지 않습니다. 이 오류에 대해 인터넷에서 찾을 수 있는 것은 a) 브로커가 EA 거래를 허용하지 않거나(사실이 아님을 알고 있음) b) 거래가 중지 및/또는 제한을 전송하지 않는다는 것을 의미합니다. Instant Execution 브로커와 협력하십시오(거래는 정지 또는 제한을 보내지 않습니다). Forex.com은 거래일 중 언제라도 거래를 중단하지 않는다고 밝혔습니다.
이 그룹에 대한 내 질문은 다음과 같습니다.
1. 이 문제를 겪은 사람이 있습니까?
2. 그렇다면 그것을 해결하기 위해 무엇을 했습니까?
3. 이 문제를 본 적이 없다면 무엇이 원인이 될 수 있다고 생각합니까?
나는 이것이 내가 보지 못하는 단순한 것이라고 확신합니다. 왼쪽 필드의 모든 의견, 경험 및 생각에 대한 이야기는 가장 감사할 것입니다.
[lang=pl]시간이 GMT인지 아닌지에 대한 추가 질문이 있습니까? GMT가 아닌 경우 이 EA에서 약간의 변경을 가할 것입니다.
방금 만들었습니다. 모든 것이 정상이면 확인하십시오.
낮고 높은 stopLoss와 TP i 사이의 거리가 외부 변수로 만들어졌습니다.
건배 Grzesiek.[/lang]친애하는 그제지크
이 표시기를 전문가 폴더에 붙여넣고 오늘 어떻게 작동하는지 알아보기 위해 모니터링했습니다. 문제는 일단 첫 번째 거래를 하고 정지 또는 t/p에서 주문을 닫으면 즉시 EA가 최근 주문을 마감한 가격으로 다시 거래를 시작한다는 것입니다. 코드에서 어떻게 멈출 수 있습니까? 감사해요
아무도 도와줄 수 있나요?
안녕하세요 포럼
이 코드에는 한 가지 문제가 있습니다. 거래를 실행할 때는 OK지만 주문을 다시 닫으면 EA는 이전 주문이 마감된 가격과 시간에 새로운 거래를 엽니다. 코드에서 오류를 보지 못했습니다. 이 글을 쓴 사람은 매우 바쁘고 온라인 상태가 아닙니다. 누구든지 문제가 무엇인지 제안 할 수 있습니까?
외부 이중 정지 손실 = 35.0;
외부 이중 takeProfit = 50.0;
외부 문자열 시작="00:00";
외부 문자열 종료 = "08:00";
외부 이중 거리 = 5;
부울 isECN = true;
부울 조건 = 거짓;
부울 cond2 = 거짓;
이중 낮은;
더블 하이;
외부 이중 로트 = 1;
정수 마법 = 123;
int 미끄러짐 = 1;
문자열 주석 = "테스트";
인트 티켓;
//+----------------------------------------------- -------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- -------------------+
정수 시작()
{
//----
if(isGoodTime(시작, 종료))
{
if(! 조건)
{
낮음 = 입찰가
높음 = 묻다;
}
조건 = 참;
if(입찰가 < 낮음) 낮음 = 입찰가;
if(요청 > 높음) 높음 = 질문;
}
if((높은 - 낮은)*1000>거리)
{
조건2 = 참;
}
if(!isGoodTime(시작, 종료))
{
조건 = 거짓;
}
if(!isGoodTime(시작, 종료) && 조건2)
{
if(countOrders(magic,OP_SELL) == 0 )
{
if(입찰가<=(낮음-0.0010))
{
if(isECN == 거짓)
{
OrderSend(Symbol(),OP_SELL,lots,Bid,slippage,sltpValue(Ask+ stopLoss*Point,stopLoss),sltpValue(Ask-takeProfit*Point,takeProfit),comment,magic);
}
if(isECN)
{
ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,0,0,comment,magic);
주문선택(티켓,SELECT_BY_TICKET);
OrderModify(티켓,OrderOpenPrice(),sltpValue(Ask +stopLoss*Point, stopLoss),sltpValue(Bid-takeProfit*Point,takeProfit),0);
}
}
}
if(countOrders(매직,OP_BUY) == 0)
{
if((높은 요청)>=0.0010)
{
if(isECN==거짓)
{
OrderSend(Symbol(),OP_BUY,lots,Ask, slippage,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point,takeProfit),comment,magic);
}
if(isECN)
{
ticket=OrderSend(Symbol(),OP_BUY,lots,Ask, slippage,0,0,comment,magic);
주문선택(티켓,SELECT_BY_TICKET);
OrderModify(티켓,OrderOpenPrice(),sltpValue(Bid - stopLoss*Point, stopLoss),sltpValue(Ask+ takeProfit*Point,takeProfit),0);
}
}
}
}
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
bool isGoodTime(문자열 시작, 문자열 끝) {
if(TimeCurrent()>StrToTime(시작) && TimeCurrent()<StrToTime(끝)) {
반환(참);
}
반환(거짓);
}
int countOrders(int oMagic,int oType) {
정수 수 = 0;
for(int i=0;i<OrdersTotal();i++) {
if(주문선택(i,SELECT_BY_POS)) {
if(OrderMagicNumber()==oMagic) {
if(OrderSymbol()==Symbol()) {
if(OrderType()==oType || oType<0) {
카운트++;
}
}
}
}
}
반환(카운트);
}
이중 sltpValue(이중 w1, int w2)
{
if(w2 == 0)
리턴(0);
반환 (NormalizeDouble(w1, 숫자));
}
안녕하세요 아바시스입니다.
내가 말할 수 있는 한 코드에는 아무런 문제가 없습니다. 귀하의 설명에 따르면 코드는 정확히 프로그래밍된 대로 수행합니다(Ask가 높은 것보다 높을 때 구매하고 입찰가가 낮은 것보다 낮을 때 판매). 기본적으로 계속 구매하고 각각 고가와 저가가 깨져 판매합니다.
건배,
귀하의 의견에 감사드립니다
하루에 한 번만 거래하고 처음에만 거래하도록 코드에 지시하는 방법이 있습니까?
이 코드의 작성자는 매우 바빠서 많은 시간을 할애할 수 없는 것처럼 보입니다.
도움을 주시면 감사하겠습니다[lang=pl]//+------------------------------------------ ------------------------+
//| 간단한 EA.mq4 |
//| 저작권 © 2011, luktom.biz |
//| www.luktom.biz/ko |
//+----------------------------------------------- -------------------+
#property copyright "Copyright © 2011, luktom.biz."
#속성 링크 "http://www.luktom.biz"
외부 이중 정지 손실 = 300.0;
외부 이중 takeProfit = 500.0;
외부 문자열 시작="2:00";
외부 문자열 End="10:00";
외부 이중 거리 = 60;
부울 isECN = true;
부울 조건 = 거짓;
부울 cond2 = 거짓;
이중 낮은;
더블 하이;
외부 이중 로트 = 0.1;
정수 마법 = 1232344524285020;
int 미끄러짐 = 1;
문자열 주석 = "";
인트 티켓;
int short = 0;
정수 길이 = 0;
//+----------------------------------------------- -------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
인쇄(countOrders(magic,OP_BUY));
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- -------------------+
정수 시작()
{
인쇄(계정통화());
//----
if(isGoodTime(시작, 종료))
{
짧은 = 0;
긴 = 0;
if(! 조건)
{
낮음 = 입찰가
높음 = 묻다;
}
조건 = 참;
if(입찰가 < 낮음) 낮음 = 입찰가;
if(요청 > 높음) 높음 = 질문;
}
if((높은 - 낮은)*1000>거리)
{
조건2 = 참;
}
if(!isGoodTime(시작, 종료))
{
조건 = 거짓;
}
if(!isGoodTime(시작, 종료) && 조건2)
{
if(countOrders(magic,OP_SELL) == 0 )
{
if(입찰가<=(낮음-0.0005) && 매도 == 0)
{
짧은++;
if(isECN == 거짓)
{
OrderSend(Symbol(),OP_SELL,lots,Bid,slippage,sltpValue(Ask+ stopLoss*Point,stopLoss),sltpValue(Ask-takeProfit*Point,takeProfit),comment,magic);
}
if(isECN)
{
ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,0,0,comment,magic);
주문선택(티켓,SELECT_BY_TICKET);
OrderModify(티켓,OrderOpenPrice(),sltpValue(Ask +stopLoss*Point, stopLoss),sltpValue(Bid-takeProfit*Point,takeProfit),0);
}
}
}
if(countOrders(매직,OP_BUY) == 0)
{
if((높은 요청)>=0.005 && 긴 ==0)
{
긴++;
if(isECN==거짓)
{
OrderSend(Symbol(),OP_BUY,lots,Ask, slippage,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point,takeProfit),comment,magic);
}
if(isECN)
{
ticket=OrderSend(Symbol(),OP_BUY,lots,Ask, slippage,0,0,comment,magic);
주문선택(티켓,SELECT_BY_TICKET);
OrderModify(티켓,OrderOpenPrice(),sltpValue(Bid - stopLoss*Point, stopLoss),sltpValue(Ask+ takeProfit*Point,takeProfit),0);
}
}
}
}
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
bool isGoodTime(문자열 시작, 문자열 끝) {
if(TimeCurrent()>StrToTime(시작) && TimeCurrent()<StrToTime(끝)) {
반환(참);
}
반환(거짓);
}
int countOrders(int oMagic,int oType) {
정수 수 = 0;
for(int i=0;i<OrdersTotal();i++) {
if(주문선택(i,SELECT_BY_POS)) {
if(OrderMagicNumber()==oMagic) {
if(OrderSymbol()==Symbol()) {
if(OrderType()==oType || oType<0) {
카운트++;
}
}
}
}
}
리턴(카운트);
}
이중 sltpValue(이중 w1, int w2)
{
if(w2 == 0)
리턴(0);
반환 (NormalizeDouble(w1, 숫자));
}
이제 EA는 하루에 한 자리만 엽니다. 이메일에 대한 귀하의 질문을 참조하면 포럼의 어딘가에 내 게시물이 있습니다. :)
찾으면 알려주십시오.
건배,
그르제식[/lang]
안녕하세요 아바시스입니다.
내가 말할 수 있는 한 코드에는 아무런 문제가 없습니다. 귀하의 설명에 따르면 코드는 정확히 프로그래밍된 대로 수행합니다(Ask가 높은 것보다 높을 때 구매하고 입찰가가 낮은 것보다 낮을 때 판매). 기본적으로 계속 구매하고 각각 고가와 저가가 깨져 판매합니다.
건배,귀하의 의견에 감사드립니다
하루에 한 번만 거래하고 처음에만 거래하도록 코드에 지시하는 방법이 있습니까?
이 코드의 작성자는 매우 바빠서 많은 시간을 할애할 수 없는 것처럼 보입니다.
그리고 내가 알아차린 것은 시스템이 코드에 표시된 시간 사이의 범위가 60핍 이상임에도 불구하고 거래를 실행 한다는 것입니다. 시스템은 여전히 거래하며, 특정 시간 사이의 범위(코드에 표시됨, 시작 및 종료 시간 참조)가 60핍 다음 거래.
도움을 주시면 감사하겠습니다
[lang=pl]//+------------------------------------------ ------------------------+
//| 간단한 EA.mq4 |
//| 저작권 © 2011, luktom.biz |
//| www.luktom.biz/ko |
//+----------------------------------------------- -------------------+
#property copyright "Copyright © 2011, luktom.biz."
#속성 링크 "http://www.luktom.biz"
외부 이중 정지 손실 = 300.0;
외부 이중 takeProfit = 500.0;
외부 문자열 시작="2:00";
외부 문자열 End="10:00";
외부 이중 거리 = 60;
부울 isECN = true;
부울 조건 = 거짓;
부울 cond2 = 거짓;
이중 낮은;
더블 하이;
외부 이중 로트 = 0.1;
정수 마법 = 1232344524285020;
int 미끄러짐 = 1;
문자열 주석 = "";
인트 티켓;
int short = 0;
정수 길이 = 0;
//+----------------------------------------------- -------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
인쇄(countOrders(magic,OP_BUY));
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- -------------------+
정수 시작()
{
인쇄(계정통화());
//----
if(isGoodTime(시작, 종료))
{
짧은 = 0;
긴 = 0;
if(! 조건)
{
낮음 = 입찰가
높음 = 묻다;
}
조건 = 참;
if(입찰가 < 낮음) 낮음 = 입찰가;
if(요청 > 높음) 높음 = 질문;
}
if((높은 - 낮은)*1000>거리)
{
조건2 = 참;
}
if(!isGoodTime(시작, 종료))
{
조건 = 거짓;
}
if(!isGoodTime(시작, 종료) && 조건2)
{
if(countOrders(magic,OP_SELL) == 0 )
{
if(입찰가<=(낮음-0.0005) && 매도 == 0)
{
짧은++;
if(isECN == 거짓)
{
OrderSend(Symbol(),OP_SELL,lots,Bid,slippage,sltpValue(Ask+ stopLoss*Point,stopLoss),sltpValue(Ask-takeProfit*Point,takeProfit),comment,magic);
}
if(isECN)
{
ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,0,0,comment,magic);
주문선택(티켓,SELECT_BY_TICKET);
OrderModify(티켓,OrderOpenPrice(),sltpValue(Ask +stopLoss*Point, stopLoss),sltpValue(Bid-takeProfit*Point,takeProfit),0);
}
}
}
if(countOrders(매직,OP_BUY) == 0)
{
if((높은 요청)>=0.005 && 긴 ==0)
{
긴++;
if(isECN==거짓)
{
OrderSend(Symbol(),OP_BUY,lots,Ask, slippage,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point,takeProfit),comment,magic);
}
if(isECN)
{
ticket=OrderSend(Symbol(),OP_BUY,lots,Ask, slippage,0,0,comment,magic);
주문선택(티켓,SELECT_BY_TICKET);
OrderModify(티켓,OrderOpenPrice(),sltpValue(Bid - stopLoss*Point, stopLoss),sltpValue(Ask+ takeProfit*Point,takeProfit),0);
}
}
}
}
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
bool isGoodTime(문자열 시작, 문자열 끝) {
if(TimeCurrent()>StrToTime(시작) && TimeCurrent()<StrToTime(끝)) {
반환(참);
}
반환(거짓);
}
int countOrders(int oMagic,int oType) {
정수 수 = 0;
for(int i=0;i<OrdersTotal();i++) {
if(주문선택(i,SELECT_BY_POS)) {
if(OrderMagicNumber()==oMagic) {
if(OrderSymbol()==Symbol()) {
if(OrderType()==oType || oType<0) {
카운트++;
}
}
}
}
}
반환(카운트);
}
이중 sltpValue(이중 w1, int w2)
{
if(w2 == 0)
리턴(0);
반환 (NormalizeDouble(w1, 숫자));
}
이제 EA는 하루에 한 자리만 엽니다. 이메일에 대한 귀하의 질문을 참조하면 포럼의 어딘가에 내 게시물이 있습니다. :)
찾으면 알려주십시오.
건배,
그르제식[/lang]고마워요,
여기에 전체 코드를 복사해서 mq4 파일에 붙여넣었는데 Experts 폴더에 복사하면 작동이 안되고 ex4 파일도 생성되지 않고 Experts Advisors 메뉴에도 뜨지 않습니다. 그래서 mq4 파일처럼 업로드할 수 있습니까? 아니면 코드에 어떤 것이 있습니까? 제가 여러 번 시도했기 때문입니다.
차트에서 마우스 클릭 x,y 위치 감지
MT4에서 마우스 클릭 위치를 감지할 수 있습니까? WindowOnDrop에 대해 말하는 것이 아닙니다. x,y 화면 좌표를 알고 있으면 해당 가격/시간으로 변환할 수 있습니까?
당신의 도움을 주셔서 감사합니다.
친애하는,
티파니
친구에게
오늘 월요일에 코드( 목요일과 금요일에 작동했던 이전 코드)가 전혀 작동하지 않았습니다.
수동으로 거래를 입력했는데,
간단한 시스템: EA 권장 사항이 거의 필요하지 않음
여기 논리가 있습니다
GMT 02:00에서 10:00 사이의 범위가 60핍 미만일 때 거래한 다음 공개 판매 IF 가격이 최소 5핍 라인을 돌파하거나 가격이 최대 + 5핍 라인을 돌파하면 매수합니다. 그리고 하루에 한 번만 거래를 실행하세요. 거래가 중지된 상태에서 취소되거나 하루에 한 번만 주문 하여 이익 을 얻는 것은 중요하지 않습니다.
여기에 코드가 있지만 작동하지 않습니다. MT4의 EA MANU에는 비활성화 아이콘이 있고 전문가 폴더에 ex4 파일이 없습니다. 무엇이 잘못되었는지 이해할 수 없습니다.
외부 이중 정지 손실 = 300.0;
외부 이중 takeProfit = 500.0;
외부 문자열 시작 = "2: 00";
외부 문자열 종료 = "10:00";
외부 이중 거리 = 60;
부울 isECN = true;
부울 조건 = 거짓;
부울 cond2 = 거짓;
이중 낮은;
더블 하이;
외부 이중 로트 = 0.1;
정수 마법 = 1232344524285020;
int 미끄러짐 = 1;
문자열 주석 = "";
인트 티켓;
int short = 0;
긴 정수 = 0;
//+----------------------------------------------- -------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
//----
(0) 반환;
}
//+----------------------------------------------- -------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
인쇄(countOrders(매직, OP_BUY));
//----
(0) 반환;
}
//+----------------------------------------------- -------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- -------------------+
정수 시작()
{
인쇄(AccountCurrency());
//----
if (isGoodTime(시작, 끝))
{
짧은 = 0;
긴 = 0;
만약 (! 조건)
{
낮음 = 입찰가
높음 = 묻다;
}
조건 = 참;
if (입찰가 < 낮음) 낮음 = 입찰가;
if (Ask > high) high = 묻다;
}
if ((높은-낮은) * 1000 > 거리)
{
조건2 = 참;
}
if(! isGoodTime(시작, 끝))
{
조건 = 거짓;
}
if(! isGoodTime(시작, 끝) & & cond2)
{
if (countOrders(매직, OP_SELL) == 0)
{
if (입찰 ≪ = (CRL-0.0005) & & short == 0)
{
짧은 + +;
if (isECN == 거짓)
{
OrderSend (Symbol(), OP_SELL, lot, Bid, slippage, sltpValue (Ask + stopLoss * Point, stopLoss), sltpValue (Ask-takeProfit * Point, takeProfit), comment, magic);
}
if (isECN)
{
티켓 = OrderSend (Symbol(), OP_SELL, lot, Bid, slippage, 0,0, comment, magic);
OrderSelect(티켓, SELECT_BY_TICKET);
OrderModify(티켓, OrderOpenPrice(), sltpValue(Ask + stopLoss * Point, stopLoss), sltpValue(Bid-takeProfit * Point, takeProfit), 0);
}
}
}
if (countOrders(매직, OP_BUY) == 0)
{
if ((높은 요청) > = 0.005 & & 긴 = = 0)
{
긴 + +;
if (isECN == 거짓)
{
OrderSend(Symbol(), OP_BUY, lot, Ask, slippage, sltpValue(Ask-stopLoss * Point, stopLoss), sltpValue(Bid + takeProfit * Point, takeProfit), comment, magic);
}
if (isECN)
{
티켓 = OrderSend(Symbol(), OP_BUY, lot, Ask, slippage, 0,0, comment, magic);
OrderSelect(티켓, SELECT_BY_TICKET);
OrderModify(티켓, OrderOpenPrice(), sltpValue(Bid-stopLoss * Point, stopLoss), sltpValue(Ask + takeProfit * Point, takeProfit), 0);
}
}
}
}
//----
(0) 반환;
}
//+----------------------------------------------- -------------------+
bool isGoodTime(문자열, 문자열, 시작, 끝) {
if (TimeCurrent() > 현지 시간(시작) & & TimeCurrent < 현지 시간()(종료)) {
반환(참);
}
반환(거짓);
}
int countOrders (int, int oMagic oType) {
정수 개수 = 0;
for (int i = 0; i < OrdersTotal(); i ++) {
if (OrderSelect (i, SELECT_BY_POS)) {
if (OrderMagicNumber () == oMagic) {
if (OrderSymbol() = 기호()) {
if (OrderType() == oType || oType < 0) {
카운트 ++;
}
}
}
}
}
반환(카운트);
}
이중 sltpValue(이중, int w1 w2)
{
만약 (w2 = = 0)
리턴(0);
반환(NormalizeDouble(w1, 숫자));
}
Forex.com EA
난 바보야 이것을 잘못된 포럼에 게시했는데... 프로그래밍 포럼으로 옮기는 방법을 모르겠습니다. 불편을 드려 죄송합니다. 실수는 의도하지 않았다.
저는 3년 동안 현물 외환 거래를 했으며 2개의 EA를 개발했습니다. 이 EA는 Glocap, FXCM 및 Alpari에서 잘 실행됩니다(저는 미국 거주자이므로 브로커 선택이 다소 제한됨). 또한 스프레드에 커미션이 내장된 MT4 계정을 원합니다(개인 취향).
저는 최근에 Forex.com(Gain Capital) 데모 계정에서 이 EA를 테스트했습니다. 두 EA 모두 잘 작동했고 프로그래밍된 규칙에 따라 거래되었습니다. 그러나 Forex.com에서 라이브 계정을 개설했을 때 EA #1은 더 이상 제대로 작동하지 않지만 EA #2는 제대로 작동합니다. EA #1은 Forex.com 전략 테스터에서 잘 작동하지만 그다지 중요하지 않다는 것을 알고 있습니다. 두 EA 모두 동일한 코드를 사용하여 거래를 시작하고(거래를 열려고 할 때 EA #1의 오류가 발생함), 로트 크기를 설정하고, 거래를 모니터링하고, 거래를 마감하기 때문에 이 모든 것이 제게는 매우 이상합니다. 다음은 두 EA에 대한 정보입니다.
EA #1 EUR/JPY Ichimoku 표시기 사용
EA #2 EUR/USD 3 이동 평균 및 MACD 사용
전에 말했듯이 EA #2는 잘 거래됩니다. 프로그램된 규칙에 따라 작동합니다. EA #1이 일부 거래를 열려고 하면 다음 오류 메시지가 나타납니다. 2011.11.21 17:00:02 Ichimoku_1700Eastern EURJPYpro,H1: Ichimoku_Open EA for EURJPYpro: BUY 주문 열기 오류: (133) trade is disabled /// for 103.7210
또한 EA #2가 거래를 시도할 때 Experts 로그는 항상 오류가 발생하는 거래 직전에 std.lib가 로드됨을 보여줍니다(EA #1에서는 발생하지 않음):2011.11.21 17:00: 02 stdlib EURJPYpro,H1: 성공적으로 로드됨
이 퍼즐의 마지막 조각은 다음과 같습니다. EA #2는 거래를 열지만 1700 동부에서는 열지 않습니다. 던져진 모든 오류는 1700 Eastern에서 시작하려고 시도하는 거래에서 발생했습니다(이것은 우연의 일치일 수 있음).
EA를 찢어버렸습니다. 코드를 처음부터 다시 입력했습니다. EA #1에서 EA #2로 코드를 복사했는데 문제가 해결되지 않는 것 같습니다. Forex.com은 그들이 제공하지 않는 이 "EA 지원"을 고려하기 때문에 도움을 주고 싶지 않습니다. 이 오류에 대해 인터넷에서 찾을 수 있는 것은 a) 브로커가 EA 거래를 허용하지 않거나(사실이 아님을 알고 있음) b) 거래가 중지 및/또는 제한을 전송하지 않는다는 것을 의미합니다. Instant Execution 브로커와 협력하십시오(거래는 정지 또는 제한을 보내지 않습니다). Forex.com은 거래일 중 언제라도 거래를 중단하지 않는다고 밝혔습니다.
이 그룹에 대한 내 질문은 다음과 같습니다.
1. 이 문제를 겪은 사람이 있습니까?
2. 그렇다면 그것을 해결하기 위해 무엇을 했습니까?
3. 이 문제를 본 적이 없다면 무엇이 원인이 될 수 있다고 생각합니까?
나는 이것이 내가 보지 못하는 단순한 것이라고 확신합니다. 왼쪽 필드의 모든 의견, 경험 및 생각에 대한 이야기는 가장 감사할 것입니다.