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

 
sting-igor :
그리고 DC에는 트랜잭션 수에 대한 제한이 있습니까?

일부는 트랜잭션 수에 제한이 있을 뿐만 아니라 요청 수에도 제한이 있습니다.

그들은 매우 독창적입니다! :-))

 
안녕하세요!
지난번에 주문 개시에 대해 질문했는데 지금은 주문 마감에 관한 질문입니다.)
다음은 주문을 여는 코드와 주문을 마감하는 기능입니다.
전문가의 작업에서 이러한 "기능"이 획득됩니다. 예를 들어 10개의 다른 주문이 열리고 그 중 2개가 프로세스에서 마감됩니다.

나머지는 테스트가 끝날 때까지 중단되지만 조건에 따라 한 트랜잭션이 열리면 다른 트랜잭션을 닫아야 합니다.

........................
magick= MathRand (); 
     
     if (NewBar())
 {     

   //---- Условие SELL
if (MAarrUP1[j]> 0.35 && MAarrUP2[j]> 1.8 )
     {
 closeDnOrd(); OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 3 , 0 , 0 , 0 ,magick, 0 , Blue );
     } 
  
   //---- Условие BUY
     if (MAarrDN1[j]<- 0.35 && MAarrDN2[j]<- 1.8 )
    {
closeUpOrd(); OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 3 , 0 , 0 , 0 ,magick, 0 , Red );
     }
}
............
//--------------------------------------------------------- Функции

//----- Функция закрытия селл

void closeUpOrd()
  {
   for ( int i= 0 ;i<= OrdersTotal ();i++)
      {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==false)         break ;
       if ( OrderMagicNumber ()!=magick || OrderSymbol ()!= Symbol ()) continue ;

   if ( OrderType ()==OP_SELL)
{
OrderClose ( OrderTicket (), OrderLots (),Ask, 3 , CLR_NONE );
}
      } 
    }

//---- Функция закрытия бая

void closeDnOrd()
  {
   for ( int i= 0 ;i<= OrdersTotal ();i++)
      {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==false)         break ;
       if ( OrderMagicNumber ()!=magick || OrderSymbol ()!= Symbol ()) continue ;

 if ( OrderType ()==OP_BUY)
{
 OrderClose ( OrderTicket (), OrderLots (),Bid, 3 , CLR_NONE );
}
      } 
  }

그리고 OrderClose()를 사용할 때 오류 4051 및 134에 대한 또 다른 질문은 무엇을 의미합니까? 로그에서 정보를 복사했습니다.

 02 : 54 : 37 2010.10 . 17 23 : 16   Ti&Pi_Speeder_Exp AUDUSD,M1: invalid ticket for OrderModify function
02 : 54 : 37 2010.10 . 17 23 : 16   Ti&Pi_Speeder_Exp AUDUSD,M1: OrderModify error 4051


02 : 54 : 37 2010.10 . 17 23 : 22   Ti&Pi_Speeder_Exp AUDUSD,M1: OrderSend error 134

 
Vinin :

마지막 옵션이 어느 정도 작동하기 시작한 것 같습니다. 계산을 단순화 할 수 있지만
별도의 루프에 iMAOnArray 함수가 있는 이유를 알려주십시오.
 

제발 말해! 특정 가격에 도달했을 때 동일한 마법으로 다른 로트를 사용하여 두 개의 보류 주문 을 어떻게 마감할 수 있습니까?


정수 시작()

{
더블 MyLastBullOpenPrice=0;
for(int Cnt=0;Cnt<OrdersTotal();Cnt++)
{
주문선택(Cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==12345 && OrderType()==OP_BUY)
{
MyLastBullOpenPrice=OrderOpenPrice();
더블 시나=OrderOpenPrice()+5*포인트;
두 배 총 가격 = 입찰가;

if (토탈시나>시나)
{
if (OrdersTotal()>0)
{ for (int i=OrdersTotal()-1; i>=0; i--)
{ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{ if(OrderMagicNumber()==12345)

{ if (OrderDelete(OrderTicket())==true)
{
Print("오류 = ",GetLastError()); 반환(0);
}
} } } }
}
}

반환(MyLastBullOpenPrice);
}

 
Fox_RM :
안녕하세요!
지난번에 주문 개시에 대해 질문했는데 지금은 주문 마감에 관한 질문입니다.)
다음은 주문을 여는 코드와 주문을 마감하는 기능입니다.
전문가의 작업에서 이러한 "기능"이 획득됩니다. 예를 들어 10개의 다른 주문이 열리고 그 중 2개가 프로세스에서 닫힙니다.

나머지는 테스트가 끝날 때까지 중단되지만 조건에 따라 한 트랜잭션이 열리면 다른 트랜잭션을 닫아야 합니다.

그리고 OrderClose()를 사용할 때 오류 4051 및 134에 대한 또 다른 질문은 무엇을 의미합니까? 로그에서 정보를 복사했습니다.

134 - no denyuh, 4051 - 함수에 전달된 진부한 매개변수.

본질적으로, magick 변수가 가급적이면 init() 함수에서 한 번만 할당되었는지 확인하십시오. 그렇지 않으면 각 주문에 고유한 magick가 있고 결과는 귀하가 말한 것과 거의 동일합니다.

 

배열을 통해 문자열의 문자를 대체하는 기능을 추가(또는 작성)하는 데 도움을 주세요.

두 개의 문자 배열이 있습니다.

문자열 기호1 [] = {"a","b","c","d"};
문자열 기호2[] = {"1","2","3","4"};


배열을 기반으로 badc 텍스트를 2143으로 대체하는 함수를 작성하려고 시도했지만 다음과 같이 나타났습니다.

string ReplaceSymbolsInStr(string text){
string textMod[] ={""};
string symbols1[] = {"a","b","c","d"};
string symbols2[] = {"1","2","3","4"};
int textLen = StringLen(text);
for (int i1=0; i1<textLen; i1++)
{
string OneSymbol = StringSubstr(text,i1,1);

for (int i2=0; i2<ArraySize(symbols1); i2++)
{
if (symbols1[i2]==OneSymbol) int PosSymbolIn1array=i2;
}
return(-1);

string OneSymbolMod = symbols2[PosSymbolIn1array];
int NewArraySize = ArraySize(textMod)+1;
ArrayResize(textMod,NewArraySize);
textMod[i1]=OneSymbolMod;
string textNew;
textNew=StringConcatenate(textMod[1],textMod[2]...);//собрать массив в строку вообще не могу :(
return (textNew);
}
}

나는 그것이 정확하지 않으며 배열을 문자열로 전혀 수집할 수 없다는 것을 알고 있습니다. 도와주세요.

 
Zhunko :

일부는 트랜잭션 수에 제한이 있을 뿐만 아니라 요청 수에도 제한이 있습니다.

그들은 매우 독창적입니다! :-))

그들이 당신의 일에 간섭하는 것을 막고 있습니까?
 
Lians :

배열을 통해 문자열의 문자를 대체하는 기능을 추가(또는 작성)하는 데 도움을 주세요.

두 개의 문자 배열이 있습니다.

문자열 기호1[] = {"a","b","c","d"};
문자열 기호2[] = {"1","2","3","4"};


배열을 기반으로 badc 텍스트를 2143으로 대체하는 함수를 작성하려고 시도했지만 다음과 같이 나타났습니다.

string ReplaceSymbolsInStr(string text){
string textMod[] ={""};
string symbols1[] = {"a","b","c","d"};
string symbols2[] = {"1","2","3","4"};
int textLen = StringLen(text);
for (int i1=0; i1<textLen; i1++)
{
string OneSymbol = StringSubstr(text,i1,1);

for (int i2=0; i2<ArraySize(symbols1); i2++)
{
if (symbols1[i2]==OneSymbol) int PosSymbolIn1array=i2;
}
return(-1);

string OneSymbolMod = symbols2[PosSymbolIn1array];
int NewArraySize = ArraySize(textMod)+1;
ArrayResize(textMod,NewArraySize);
textMod[i1]=OneSymbolMod;
string textNew;
textNew=StringConcatenate(textMod[1],textMod[2]...);//собрать массив в строку вообще не могу :(
return (textNew);
}
}

나는 그것이 정확하지 않으며 배열을 문자열로 전혀 수집할 수 없다는 것을 알고 있습니다. 도와주세요.

이론적으로 대체 배열에서 문자의 인덱스를 찾았는데 왜 다른 배열을 생성합니까?

첫 번째 루프에서 수신된 데이터를 일반 텍스트 변수에 추가하려고 시도합니다.

문자열 ReplaceSymbolsInStr(문자열 텍스트)

{


문자열 기호1[] = {"a","b","c","d"};

문자열 기호2[] = {"1","2","3","4"};

stringtextNew="";

int textLen = StringLen(텍스트);

for (int i1=0; i1<textLen; i1++)
{
문자열 OneSymbol = StringSubstr (텍스트,i1,1);

for (int i2=0; i2<ArraySize(symbols1); i2++)

{
if (symbols1[i2]==OneSymbol) { textNew = 텍스트New + 기호2[ i2 ] ; i2=배열크기(심볼1) ; }

}

}

반환(텍스트신규);

}

 


다음과 같이 더 쉽습니다.

문자열 ReplaceSymbolsInStr(문자열 텍스트)

{


문자열 기호1[4] = {"a","b","c","d"}; // 배열의 문자 수에 따른 배열 크기

stringtextNew="";

(int i1=0; i1< StringLen(텍스트) ; i1++)

{
문자열 OneSymbol = StringSubstr(텍스트,i1,1);

for (int i2=0; i2<ArraySize(symbols1); i2++)

{
if (symbols1[i2]==OneSymbol)

{

텍스트신규 = 텍스트새로 만들기 + ( i2+1) ; // 문자 자체의 번호가 반환된 텍스트에 추가되었으며 ONE부터 계산

i2=배열크기(심볼1) ; // 검색 루프 종료

}

}

}

리턴(텍스트신규);

}

 

안녕하세요!

어드바이저에서 이메일로 csv 형식의 데이터를 자동으로 보내는 방법을 알려주십시오(또는 예제에 대한 링크를 제공)?

고맙습니다.

사유: