[아카이브!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 2. - 페이지 268

 

extern string AlliesO1 = "GBPUSD"; - валюта

string AlliesO[5]; - массив в котором хранятся валюты.



Так я проверяю нужно ли добавлять валюту в массив. (Изначально вместо валют нули, всего валют 5)

if (StringLen (AlliesO1)>2)
{
CountAlliesO++;
AlliesO [0] = AlliesO1;
}





Потом в цикле перебираю валюты и на каждой валюте открываю ордер.

for (int i=0;i<CountAlliesO;i++)

{
l_ticket_4 = OrderSend(AlliesO[i], OP_BUY, Lots, NormalizeDouble(Ask, Digits), l_slippage_8, iif(StopLoss == 0.0, 0, NormalizeDouble(Ask - StopLoss / MathPow(10, Digits), Digits)), iif(TakeProfit == 0.0, 0, NormalizeDouble(Ask +
TakeProfit / MathPow(10, Digits), Digits)), 0, Magic, 0, CLR_NONE);
Print ("Ticket " + Allies[i] + ": " + l_ticket_4);
}



출력되는 내용은 다음과 같습니다.

22:05:25 RSI_Valut_Test2 EURUSD,H1: CountAlliesO: 2
22:05:25 RSI_Valut_Test2 EURUSD,H1: CountEnemyO: 2
22:05:25 RSI_Valut_Test2 EURUSD,H1: Allies: GBPUSD // - 루프에서 AlliesO[i]를 인쇄합니다.
22:05:25 RSI_Valut_Test2 EURUSD,H1: 동맹국: GBPUSD
22:05:25 RSI_Valut_Test2 EURUSD,H1: 적: USDCHF
22:05:25 RSI_Valut_Test2 EURUSD,H1: 적: USDCHF
22:05:25 RSI_Valut_Test2 EURUSD,H1: 티켓 USDCHF: -1

22:05:25 RSI_Valut_Test2: OrderSend 함수 의 기호 이름은 문자열이어야 합니다.


글쎄, 일반적으로 이와 같은 것은 전체 코드를 줄 수 없기 때문에 배포하지 말라고 요청했습니다 ... 글쎄,이 데이터를 출력하는 몇 가지 지문이 여전히 거기에 붙어 있습니다 ... 일반적으로 이것이 문자열이 아니라는 것을 보여주는 이유는 무엇입니까? 모든 곳에서 문자열로 선언된다면?


미리 감사드립니다.

 

모두 좋은 저녁입니다. 오픈 후 몇 바 주문을 마감하는 함수를 올바르게 작성하여 이 금액이 최적화될 수 있도록 하는 방법을 알려주세요. 미리 감사드립니다.

 

CountBars - 막대의 수입니다 .

티켓 - 주문 번호.

CloseAfterSomeBar (int CountBars, int Ticket)

{
OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)
datetime date = OrderOpenTime();
int BarShift = iBarShift (Symbol(), 0, date, false);
if (CountBars>=BarShift)
{
if (OrderType() = OP_BUY)
OrderClose(Ticket,OrderLots(),Bid, (Ask - Bid) / Point, CLR_NONE);
else
OrderClose(Ticket,OrderLots(),Ask, (Ask - Bid) / Point, CLR_NONE);
}
}


모든 틱마다 실행합니다. 막대 수는 확실하지 않습니다. -1 또는 +1일 수 있습니다. 오프셋이 어떻게 고려되는지는 정확히 모르겠지만... 글쎄요, M1 확인은 어렵지 않아요...

그래서 무엇?

 
PODLIY16 :

CountBars - 막대의 수입니다.

티켓 - 주문 번호.

CloseAfterSomeBar (int CountBars, int Ticket)

{
OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)
datetime date = OrderOpenTime();
int BarShift = iBarShift (Symbol(), 0, date, false);
if (CountBars>=BarShift)
{
if (OrderType() = OP_BUY)
OrderClose(Ticket,OrderLots(),Bid, (Ask - Bid) / Point, CLR_NONE);
else
OrderClose(Ticket,OrderLots(),Ask, (Ask - Bid) / Point, CLR_NONE);
}
}


모든 틱마다 실행합니다. 막대 수는 확실하지 않습니다. -1 또는 +1일 수 있습니다. 오프셋이 어떻게 고려되는지는 정확히 모르겠지만... 글쎄요, M1 확인은 어렵지 않아요...

그래서 무엇?

 
isaev-av :

아마도. 저는 프로그래머가 아닙니다. 나는 지금 시도 할거야. 가장 중요한 것은 TF에서 작동한다는 것입니다.
 
void CloseAfterSomeBar (int CountBars, int Ticket)
{
OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES);
datetime date = OrderOpenTime();
int BarShift = iBarShift (Symbol(), 0, date, false);
if (BarShift>=CountBars)
{
if (OrderType() == OP_BUY)
OrderClose(Ticket,OrderLots(),Bid, (Ask - Bid) / Point, CLR_NONE);
else
OrderClose(Ticket,OrderLots(),Ask, (Ask - Bid) / Point, CLR_NONE);
}
}


이것은 정확합니다. 원하는 바가 열리자 마자 주문을 닫습니다. 예를 들어 M1에서 방금 시도했는데 주문이 9분에 열리고 11:01에 마감되었습니다.

 
RSI 또는 Stohastic 지표에 MA를 적용하는 방법을 알려주세요. MA는 차트가 아니라 지표에서 취한 것입니까?
 
작동하지 않습니다. 누군가가 고문을 고칠 수 있습니까?. 모두 좋은 저녁입니다. 오픈 후 몇 바 주문을 마감하는 함수를 올바르게 작성하여 이 금액이 최적화될 수 있도록 하는 방법을 알려주세요. 미리 감사드립니다.
파일:
 

다음과 같이 2개의 새로운 변수가 있습니다.


외부 부울 IfTrueThenCountBarWork = 거짓; // - false로 설정하면 이 기능이 작동하지 않습니다. 작동하려면 true로 설정해야 합니다.

외부 정수 CountBar = 0; // - 이후에 닫을 막대의 수입니다 . 막대를 고려하여 위에 썼습니다.


뭔가 도움이 되었기를 바랍니다.

파일:
 
PODLIY16 :

다음과 같이 2개의 새로운 변수가 있습니다.


외부 부울 IfTrueThenCountBarWork = 거짓; // - false로 설정하면 이 함수는 작동하지 않습니다. 작동하려면 true로 설정해야 합니다.

외부 정수 CountBar = 0; // - 이후에 닫을 막대의 수입니다. 막대를 고려하여 위에 썼습니다.


뭔가 도움이 되었기를 바랍니다.




고맙습니다!