포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 1094

 
alvlaf :

고문을 차트에 수동으로 연결하고 각 차트에서 MaxOpenOrders 주문 또는 TOTAL MaxOpenOrders 주문을 여는 데 필요합니까? 그리고 어떤 주문: 시장가 주문만 또는 지정가 및 정지를 포함한 모든 주문?

 
A13ksandr :

고문을 차트에 수동으로 연결하고 각 차트에서 MaxOpenOrders 주문 또는 TOTAL MaxOpenOrders 주문을 여는 데 필요합니까? 그리고 어떤 주문: 시장가 주문만 또는 제한 및 정지를 포함한 모든 주문?

모든 도구에 대해 모든 것을 열어야 합니다. MaxOpenOrders가 1이라고 가정하면 하나의 시장 주문만 열어야 합니다. 이것은 바이너리 옵션 봇이며 보류 중인 주문 이 없습니다. 사실, 연속적으로 작동합니다. 포지션이 손실로 마감되면 동일한 포지션이 증가된 로트로만 열리며 시리즈가 수익성 있는 거래로 끝날 때까지 다른 상품에서 거래를 열지 않아야 합니다.
 
A13ksandr :
"이 전략에서"라는 단어의 목적은 무엇입니까? 계정에서 수동으로 거래가 이루어지거나 이러한 주문이 건드리지 않도록 다른 Expert Advisor가 실행 중인 경우 Magic이 필요합니다. 그렇게 생각해요.
네, 감사합니다, A13ksandr , 그리고 디버깅 시에도 무익한 시리즈가 끝날 때까지 기다리지 않도록 마법을 변경하고, 마법을 제거하기만 하면 봇의 알고리즘은 변경되지 않습니다. 나는 거기에서 수동으로 주문을 열 계획이 없습니다.
 
alvlaf :
모든 도구에 대해 모든 것을 열어야 합니다. MaxOpenOrders가 1이라고 가정하면 하나의 시장 주문만 열어야 합니다. 이것은 바이너리 옵션 봇이며 보류 중인 주문이 없습니다. 사실, 연속적으로 작동합니다. 포지션이 손실로 마감되면 동일한 포지션이 증가된 로트로만 열리며 시리즈가 수익성 있는 거래로 끝날 때까지 다른 상품에서 거래를 열지 않아야 합니다.

좋아, 나는 바이너리 옵션에 대해 놓쳤다. 어떤 이유로 동일한 Expert Advisor를 다른 차트에 수동으로 연결해도 여전히 다른 Expert Advisor가 실행 중인 것으로 간주됩니다. 그리고 각 차트에 대해 1개의 옵션이 시작됩니다(글쎄, 제대로 작동할 때). 내가 틀릴 수 있기 때문이다. 나 자신. EA 자체에서 다음과 같이 다중 통화 문제를 수행했습니다.

입력 문자열 TradeSymbols = "EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDCHF, GBPCAD"; // 거래 기호

문자열 기호[50]; // 50은 가능한 최대 문자 수입니다.

정수 기호 수;

//------------------------------------------------ --

int OnInit()

{

if (IsTesting() || !ExtractSymbols())

{

SymbolCount = 1;

기호[0] = 기호();

}

반환(INIT_SUCCESSED);

}

//------------------------------------------------ --

bool ExtractSymbols()

{

짧은 쉼표 = StringGetCharacter(",", 0);

SymbolCount = StringSplit(TradeSymbols, 쉼표, 기호);

for (int i = 0, i < SymbolCount, i++)

{

StringToUpper(심볼[i]);

기호[i] = StringTrimRight(기호[i]); // 임의의 공백으로부터 보호

기호[i] = StringTrimLeft(기호[i]);

}

if (SymbolCount > 0) return(true);

반환(거짓);

}

//------------------------------------------------ --

무효 OnTick()

{

for (int i = 0, i < SymbolCount, i++)

{

이중 LastAsk = SymbolInfoDouble(Symbols[i], SYMBOL_ASK);

이중 LastBid = SymbolInfoDouble(Symbols[i], SYMBOL_BID );

// 등...

}

}

모든 차트에 고문을 첨부합니다. 따라서 정확히 MaxOpenOrders는 모든 차트에 대한 것입니다.

 
// 등등... - EA 자체의 이전 코드가 계속된다는 의미에서?
 
A13ksandr :

좋아, 나는 바이너리 옵션에 대해 놓쳤다. 어떤 이유로 동일한 Expert Advisor를 다른 차트에 수동으로 연결해도 여전히 다른 Expert Advisor가 실행 중인 것으로 간주됩니다. 그리고 각 차트에 대해 1개의 옵션이 시작됩니다(글쎄, 제대로 작동할 때). 내가 틀릴 수 있기 때문이다. 나 자신. EA 자체에서 다음과 같이 다중 통화 문제를 수행했습니다.

입력 문자열 TradeSymbols = "EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDCHF, GBPCAD"; // 거래 기호

문자열 기호[50]; // 50은 가능한 최대 문자 수입니다.

정수 SymbolCount;

//------------------------------------------------ --

int OnInit()

{

if (IsTesting() || !ExtractSymbols())

{

SymbolCount = 1;

기호[0] = 기호();

}

반환(INIT_SUCCESSED);

}

//------------------------------------------------ --

bool ExtractSymbols()

{

짧은 쉼표 = StringGetCharacter(",", 0);

SymbolCount = StringSplit(TradeSymbols, 쉼표, 기호);

for (int i = 0, i < SymbolCount, i++)

{

StringToUpper(심볼[i]);

기호[i] = StringTrimRight(기호[i]); // 임의의 공백으로부터 보호

기호[i] = StringTrimLeft(기호[i]);

}

if (SymbolCount > 0) return(true);

반환(거짓);

}

//------------------------------------------------ --

무효 OnTick()

{

for (int i = 0, i < SymbolCount, i++)

{

이중 LastAsk = SymbolInfoDouble(Symbols[i], SYMBOL_ASK);

이중 LastBid = SymbolInfoDouble(Symbols[i], SYMBOL_BID);

// 등...

}

}

모든 차트에 고문을 첨부합니다. 따라서 정확히 MaxOpenOrders는 모든 차트에 대한 것입니다.

이 코드는 MQL5로 작성되었습니까?
 
A13ksandr :
if (DayOfWeek() == 1) 가격 = iOpen(Symbol(), PERIOD_D1, 4);
if (DayOfWeek() >= 2) 가격 = iOpen(Symbol(), PERIOD_D1, DayOfWeek() - 2);

다음 주가 시작되었는데 여전히 지난 주의 화요일에 열리는 바의 가격 을 보고해야 하는 경우 어떻게 합니까? 저것들. 화요일에 바의 시가를 결정하고 필요한 만큼 시작하는 고문이 필요합니다(예: 1주, 2주, 1개월 등).

고맙습니다.

 
yaaarik777 :

다음주가 시작되었는데 마지막 주의 화요일에 열리는 바 가격을 보고해야 하는 경우 어떻게 해야 합니까? 저것들. 화요일에 바의 시가를 결정하고 필요한 만큼 시작하는 고문이 필요합니다(예: 1주, 2주, 1개월 등).

고맙습니다.

그런 다음 특정 날짜를 설정하면 프로그램이 해당 날짜 의 개장 가격을 취하므로 훨씬 쉽습니다.

 
evillive :

그런 다음 특정 날짜를 설정하면 프로그램이 해당 날짜의 개장 가격을 취하므로 훨씬 쉽습니다.

코드에 대해 도움을 줄 수 있습니까? 나는 무언가를 따라 잡고 있지 않습니다.

아니면 화요일에 첫 번째 막대 의 시작 가격을 OnInit()에 넣고 시작할 때 가격을 계산하고 EA가 다시 시작될 때까지 이를 기억할까요? 어떻게 생각하나요?

엉뚱한 글을 쓴다면 사과할게, 배우는 중일 뿐이야)

 
yaaarik777 :

코드에 대해 도움을 줄 수 있습니까? 나는 무언가를 따라 잡고 있지 않습니다.

아니면 화요일에 첫 번째 막대의 시작 가격을 OnInit()에 넣고 시작할 때 가격을 계산하고 EA가 다시 시작될 때까지 이를 기억할까요? 어떻게 생각하나요?

엉뚱한 글을 쓴다면 사과할게, 배우는 중일 뿐이야)

오늘의 첫 번째 바의 시가 = 일일 바의 시가. 이 값을 다시 계산할 필요가 없다면 인터넷에서 가능합니다.

코드는 다음과 같습니다.

 input datetime dayz= D'2016.09.06 00:00' ; //зададим прошлый вторник, начало суток

int bar_dayz= 0 ;
double price_dayz= 0 ;

int OnInit ()
{
////...
bar_dayz=iBarshift( _Symbol , PERIOD_D1 ,dayz); 
price_dayz=iOpen( _Symbol , PERIOD_D1 ,bar_dayz);
///...
}