각 통화 쌍에 대한 EA - 통화 쌍당 한 번만 열리는 코드는 무엇입니까?

 

각 통화 쌍 에 대해 별도의 EA를 사용합니다.

포지션을 개설해야 하는지 확인하기 위해 "if (OrdersTotal<1)" 미결 주문이 없는지 테스트하지만 이 경우 포지션을 여는 다른 모든 통화 쌍이 차단되고 기회를 놓치게 됩니다.

즉, 통화 쌍당 하나의 포지션만 개설하고 싶습니다 = 여러 포지션이 가능해야 하지만 다른 통화 쌍에 있어야 합니다.

"if (OrdersTotal<1)" 대신 어떤 코드를 사용해야 합니까? 아무도 나를 도울 수 있습니까? 당신의 도움에 미리 감사드립니다.

 

각 통화 쌍 은 고유한 GlobalVariable을 갖습니다(예: "MyEA_EURUSD").

EA를 하루에 한 번의 거래로 제한하는 경우 코드는 다음과 같습니다.

문자열 sCheck = "MyEA_" + Symbol();

날짜 시간 t = TimeCurrent();

날짜/시간 tTrade = t - TimeHour(t)*60*60 - TimeMinute(t)*60 - TimeSeconds(t);

if(!GlobalVariableCheck(sCheck)) GlobalVariableSet(sCheck, tTrade -PERIOD_D1 * 60);

if(GlobalVariableGet(sCheck) < tTrade) {

주문 보내기(.......);

GlobalVariableSet(sCheck, tTrade);

}

 

이것을 다시 맨 위로 가져 와서 죄송하지만 지금 같은 문제가 있습니다. 불행히도 sxTed는 나에게 질문에 대답하지 않았습니다. 거래 시간을 설명하는 것은 각 통화 쌍 에 대한 주문량과 다르기 때문입니다.

sxTed의 라인을 수정하려고 시도했지만 이 문제를 해결하는 데 실패했다고 생각합니다.

 string sCheck = "MyEA_" + Symbol ();       // already the first error in the code, second quotes should be at the end of the line.

//I would correct this one to:
string sCheck = "MyEA_ + Symbol()" ;           //However symbol() is not a function anymore ??


int start ()
{

// Closing Orders here


if (! GlobalVariableCheck (sCheck))                     //checking Globalvariable, GV available so it becomes true (independently of what kind of GV we have)...

GlobalVariableSet (sCheck, Symbol () );               //.. assigning a new GlobalVariable to the function of the current symbol the EA is attached on (does it actually work like this?)

if ( GlobalVariableGet (sCheck) == Symbol ()) {         // checking if our Symbol is the one which the EA is attached on --> becomes true...


// Order Criteria (Open trades here)

// What now? Actually i'm missing any kind of numbers or smth that limits the open orders per currency pair.

제발: 이 장소의 어떤 문헌에도 저를 연결하거나 누군가를 고용하라고 말하지 마세요. 저는 지금 책을 공부하고 있는데 막혔습니다!!!

 
mqlfor :

각 통화 쌍에 대해 별도의 EA를 사용합니다.

포지션을 개설해야 하는지 확인하기 위해 "if (OrdersTotal<1)" 미결 주문이 없는지 테스트하지만 이 경우 포지션을 여는 다른 모든 통화 쌍이 차단되고 기회를 놓치게 됩니다.

즉, 통화 쌍당 하나의 포지션만 개설하고 싶습니다 = 여러 포지션이 가능해야 하지만 다른 통화 쌍에 있어야 합니다.

"if (OrdersTotal<1)" 대신 어떤 코드를 사용해야 합니까? 아무도 나를 도울 수 있습니까? 당신의 도움에 미리 감사드립니다.


 정수 합계=OrdersTotal();
정수 개수 = 0;
정수 매그노 = 12345;
for(int pos=0;pos<total;pos++) {
    if(OrderSelect(pos,SELECT_BY_POS) == false) 계속;
    if (OrderMagicNumber() != magno) 계속;
    if (OrderSymbol() != Symbol()) 계속;
    카운트++;
}
// 이제 이 EA에서 이 기호에 대해 몇 개의 주문을 개설했는지 알 수 있습니다.
if (카운트 < 1) {
// 무언가를 하십시오 - 아마도 오픈 오더
}
도움이 되나요?
 
texto :

도움이 되나요?
매직 넘버는 필요하지 않습니다. . . 그냥 기호를 사용
 
texto :

도움이 되나요?
 int total= OrdersTotal ();

모든 통화 쌍 의 총 오픈 오더를 제한합니까?

다음과 같이 코드를 삽입했습니다.

 int total= OrdersTotal ();
int count = 0 ;
for ( int pos= 0 ;pos<total;pos++) 
{
     if ( OrderSelect (pos,SELECT_BY_POS) == false) continue ;
     if ( OrderSymbol () != Symbol ()) continue ;
    count++;
}

if (Sell_1_1 < Sell_1_2 && CloseSell1_1 > CloseSell1_2 && count < 1 ) Order = SIGNAL_SELL; // Trigger for Sell

if (Buy_1_1 > Buy_1_2 && CloseBuy1_1 < CloseBuy1_2 && count < 1 ) Order = SIGNAL_BUY;     // Trigger for Buy


if (order == SIGNAL_BUY)
{
OrderSend (...)
}   

그리고 여전히 하나의 거래만 열었습니다. sxTed는 그의 전역 변수로 우리에게 무엇을 말하려고 했습니까?

 
grey.unit :

모든 통화 쌍의 총 오픈 오더를 제한합니까?

다음과 같이 코드를 삽입했습니다.

그리고 여전히 단 하나의 거래만 시작하고 있습니다. sxTed는 그의 전역 변수로 무엇을 말하려고 했습니까?

귀하의 EA는 몇 개의 차트에 있습니까?
 
RaptorUK :
귀하의 EA는 몇 개의 차트에 있습니까?
코드를 테스트하기 위해 5개의 차트를 열었지만 N개의 차트를 열고 싶습니다. 금액은 중요하지 않습니다.
 
grey.unit :
코드를 테스트하기 위해 5개의 차트를 열었지만 N개의 차트를 열고 싶습니다. 금액은 중요하지 않습니다.
다른 쌍에서 무슨 일이 일어나고 있는지에 상관없이 EA가 각 쌍에서 거래를 열 것인지 확인하기 위해 각 쌍에서 한 번에 하나씩 코드를 테스트했습니까? 아마도 귀하의 EA는 하나의 특정 쌍에 대해서만 거래를 열 것이기 때문에 단 하나의 거래만 열 것입니다. . .
 
확실히 내가 그랬어. EURJPY에 대한 공개 거래가 있고 수동으로 종료하면 다른 EA가 다른 통화 쌍에서 거래를 열 수 있습니다.
 
mqlfor :

각 통화 쌍에 대해 별도의 EA를 사용합니다.

포지션을 개설해야 하는지 확인하기 위해 "if (OrdersTotal<1)" 미결 주문이 없는지 테스트하지만 이 경우 포지션을 여는 다른 모든 통화 쌍이 차단되고 기회를 놓치게 됩니다.

, 통화 쌍당 하나의 포지션만 개설하고 싶습니다 = 여러 포지션이 가능해야 하지만 다른 통화 쌍에 있어야 합니다.

"if (OrdersTotal<1)" 대신 어떤 코드를 사용해야 합니까? 아무도 나를 도울 수 있습니까? 당신의 도움에 미리 감사드립니다.

다음과 같이 코딩하십시오.

 int Total_Order = OrdersTotal ();
 for (pos = 0 ; pos <= Total_Order; pos ++)
      {
       if ( OrderSelect (pos, SELECT_BY_POS) == true)
        {
         if ( OrderSymbol () == Symbol ())
          {
           Print ( ":( Sorry already have that symbol opened " );
           // get outta here do something else
           break ;
          }
           else
          {
           Print ( "No order opened for this symbol" );
           Print ( "Let\'s call waitress and order some drink :)" );
           // do some order then break out and get out
          }
         }
       }