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

 

안녕하세요!

예치금의 로딩을 올바르게 표시하기 위해 거래 보고서에서 어떤 식으로든 작동하지 않습니다. )) 나는 이것을한다:

 #define RA 10000

if (Trade_Report == TRUE && !IsOptimization())
   {   int       pos;
       int       handle;
       int       Days;
       double    Swap_M;
       double    Profit_M;
       double    Swap_P;
       double    Profit_P;

       double    Source_LP[RA], LP_01[RA], LP_02[RA], LP_03[RA], LP_04[RA], LP_05[RA], LP_06[RA];
       double    Source_LP_02[RA], LP_01_02[RA], LP_02_02[RA], LP_03_02[RA], LP_04_02[RA], LP_05_02[RA], LP_06_02[RA];
       double    Source_SP[RA], SP_01[RA], SP_02[RA], SP_03[RA], SP_04[RA], SP_05[RA], SP_06[RA];
       double    Source_SP_02[RA], SP_01_02[RA], SP_02_02[RA], SP_03_02[RA], SP_04_02[RA], SP_05_02[RA], SP_06_02[RA];
       double    Load_Depo[RA]; 
   
      handle = FileOpen ( "OrdersReport.csv" , FILE_CSV | FILE_WRITE );
   
       if (handle > 0 )
                { //1
             FileWrite (handle, "Time Close" + "," + "Lots" + ","
                              + "Swap($)" + "," + "Profit($)" + "," + "Swap(p)" + "," + "Profit(p)" + "," + "Load Depo" + ","
                              + "SOURCE_LP" + "," + "LP#01" + "," + "LP#02" + "," + "LP#03" + "," + "LP#04" + "," + "LP#05" + "," + "LP#06" + ","
                              + "SOURCE_SP" + "," + "SP#01" + "," + "SP#02" + "," + "SP#03" + "," + "SP#04" + "," + "SP#05" + "," + "SP#06" );
             for (pos = 0 ; pos < OrdersHistoryTotal(); pos++)
               {   OrderSelect (pos,SELECT_BY_POS,MODE_HISTORY); //2
               
                   if (OrderType() == OP_BUY && OrderMagicNumber() == Magic_Source_LP && OrderCloseTime() == TimeCurrent ()) { Source_LP[pos] = OrderProfit(); }
                   if (OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP01 && OrderCloseTime() == TimeCurrent ()) { LP_01[pos] = OrderProfit(); }
                   if (OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP02 && OrderCloseTime() == TimeCurrent ()) { LP_02[pos] = OrderProfit(); }
                   if (OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP03 && OrderCloseTime() == TimeCurrent ()) { LP_03[pos] = OrderProfit(); }
                   if (OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP04 && OrderCloseTime() == TimeCurrent ()) { LP_04[pos] = OrderProfit(); }
                   if (OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP05 && OrderCloseTime() == TimeCurrent ()) { LP_05[pos] = OrderProfit(); }
                   if (OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP06 && OrderCloseTime() == TimeCurrent ()) { LP_06[pos] = OrderProfit(); }
                     
                   if (OrderType() == OP_SELL && OrderMagicNumber() == Magic_Source_SP && OrderCloseTime() == TimeCurrent ()) { Source_SP[pos] = OrderProfit(); }
                   if (OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP01 && OrderCloseTime() == TimeCurrent ()) { SP_01[pos] = OrderProfit(); }
                   if (OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP02 && OrderCloseTime() == TimeCurrent ()) { SP_02[pos] = OrderProfit(); }
                   if (OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP03 && OrderCloseTime() == TimeCurrent ()) { SP_03[pos] = OrderProfit(); }
                   if (OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP04 && OrderCloseTime() == TimeCurrent ()) { SP_04[pos] = OrderProfit(); }
                   if (OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP05 && OrderCloseTime() == TimeCurrent ()) { SP_05[pos] = OrderProfit(); }
                   if (OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP06 && OrderCloseTime() == TimeCurrent ()) { SP_06[pos] = OrderProfit(); }
                  
             //--- Вычисление загрузки депозита ---//
                   int               Amount_LD;
                   datetime          CurrentCloseTime = OrderCloseTime();
                   static datetime   CloseTime;                  
                  
                   if (CurrentCloseTime != CloseTime)
                     { Amount_LD = 1 ;
                       Load_Depo[pos] = (Amount_LD*(OrderLots()* 1000 )/AccountBalance())* 100 ;
                       CloseTime = OrderCloseTime(); }
                   else if (CurrentCloseTime == CloseTime)
                          { Amount_LD++;
                            Load_Depo[pos] = (Amount_LD*(OrderLots()* 1000 )/AccountBalance())* 100 ;
                            CloseTime = OrderCloseTime(); }
             //---------------------------------------------------------------------------------------------------------------------
                     
                  Swap_M     =  OrderSwap();
                  Profit_M   =  OrderProfit();
                  Swap_P     = (OrderSwap()/ 10 )/OrderLots();
                  Profit_P   = (OrderProfit()/ 10 )/OrderLots()+(OrderSwap()/ 10 )/OrderLots();
                     
                   if (OrderType() == OP_BUY || OrderType() == OP_SELL)
                     {   FileWrite (handle,TimeToStr(OrderCloseTime(),TIME_DATE|TIME_MINUTES)+ "," +DoubleToStr(OrderLots(), 2 )+ "," //3
                                          
                                          +DoubleToStr(OrderSwap(), 2 )+ "," +DoubleToStr(Profit_M+Swap_M, 2 )+ "," +DoubleToStr(Swap_P, 2 )+ ","
                                          +DoubleToStr(Profit_P, 2 )+ "," +DoubleToStr(Load_Depo[pos], 2 )+ ","
                                          
                                          +DoubleToStr(Source_LP[pos], 2 )+ "," +DoubleToStr(LP_01[pos], 2 )+ "," +DoubleToStr(LP_02[pos], 2 )+ ","
                                          +DoubleToStr(LP_03[pos], 2 )+ ","
                                          +DoubleToStr(LP_04[pos], 2 )+ "," +DoubleToStr(LP_05[pos], 2 )+ "," +DoubleToStr(LP_06[pos], 2 )+ ","
                                             
                                          +DoubleToStr(Source_SP[pos], 2 )+ "," +DoubleToStr(SP_01[pos], 2 )+ "," +DoubleToStr(SP_02[pos], 2 )+ ","
                                          +DoubleToStr(SP_03[pos], 2 )+ ","
                                          +DoubleToStr(SP_04[pos], 2 )+ "," +DoubleToStr(SP_05[pos], 2 )+ "," +DoubleToStr(SP_06[pos], 2 ));  } //3
               }   FileClose (handle); //2
         } //1

결과적으로 처음에는 잘못 계산됩니다. Load_Depo 배열의 값은 지속적으로 변경되며 열린 위치 도 고려해야 합니다. 시간이 있다면 누군가에게 모범을 보이십시오. ))

 
demlin :
솔직히 난 아무것도 이해가 안가서 거기 너무 어렵다)))
예제조차도 테스트 스크립트에서 도움이되지 않습니까?
 
FreeSerfer :

감사합니다. 의미는 분명합니다. 프로그래밍 언어가 그다지 친숙하지 않은 것은 유감입니다.

의 말을하자:

파란색 - 숫자 0 - 매수 신호

빨간색 - 1번 - 매도 신호

그리고 또 다른 질문은 화살표가 발판을 확보하고 신호를 줄 수있는 막대를 형성하는 과정에서 깜박일 수 있습니다. 바가 형성되면 명확한 신호 후에 거래를 시작해야 합니다.

누구든지 이것을 코드로 구현할 수 있습니까?

당신은 프로그래밍을 배우고 있거나 당신을 위해 그것을 할 사람을 찾고 있습니까?

Viktor는 이미 iCustom() 함수를 사용해야 한다는 점을 분명히 했습니다. 메타 편집기의 도움말에서 이에 대해 읽어보십시오. 모든 것이 거기에 자세히 설명되어 있습니다. "바운스"를 제거하려면 - iCustom()에서 0이 아닌 첫 번째 막대의 데이터를 사용하십시오 - 이미 완전히 형성되어 있습니다.

그것은 당신이 적어도 무언가를 스스로 쓰기 시작했을 때, 그들은 여기에서 당신을 기꺼이 돕고 문제가 있으면 수정하게 될 것입니다 ...

 
artmedia70 :

당신은 프로그래밍을 배우고 있거나 당신을 위해 그것을 할 사람을 찾고 있습니까?

Viktor는 이미 iCustom() 함수를 사용해야 한다는 점을 분명히 했습니다. 메타 편집기의 도움말에서 이에 대해 읽어보십시오. 모든 것이 거기에 자세히 설명되어 있습니다. "바운스"를 제거하려면 - iCustom()에서 0이 아닌 첫 번째 막대의 데이터를 사용하십시오 - 이미 완전히 형성되어 있습니다.

그것은 당신이 적어도 무언가를 스스로 쓰기 시작했을 때, 그들은 여기에서 당신을 기꺼이 돕고 문제가 있으면 수정하게 될 것입니다 ...

나는 그것을 직접 쓰고 있지만 나에게는 어렵지만 남은 것은 전문가를 칠면조에 묶는 것뿐입니다. Victor 덕분에 그녀는 곧 스스로 해결 될 것입니다. 어쨌든 응답해주시고 나아가야 할 방향을 보여주신 모든 분들께 감사드립니다.
 
peshihod :

옵션은 셀 수 없이 많습니다. 간단한 것을 선택하는 것이 좋습니다. 예를 들어:


int Orderov;
int Tip;

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int i,k;

Orderov=OrdersTotal();

for (i= 0 ;i<Orderov;i++)
{
OrderSelect(i,SELECT_BY_POS);

switch ( OrderType() )
{
case OP_BUY:
//Задача для ордера типа OP_BUY
break ;

case OP_SELL:
//Задача для ордера типа OP_BUY
break ;

case OP_BUYLIMIT:
//Задача для ордера типа OP_BUY
break ;

/// //------ и т.д.




}
}

return ( 0 );
}

도움말 ....질문에 답하기 ..............

이 부분은 모든 틱 에서 트리거됩니다.

case OP_BUY:
//Задача для ордера типа OP_BUY
break ;

case OP_SELL:
//Задача для ордера типа OP_BUY
break ;


그리고 새로운 미결 주문이 있을 때마다 한 번만 작동해야 합니다.

티켓, 마술 또는 다른 주문 식별자로 일종의 카운터를 고정해야 합니까?

-------------------------------------------------- --------------------------------------

Orderov 변수를 만들어야 합니까?
그렇게 할 수 있습니까?

for (i= 0 ;i<OrdersTotal();i++)

스크립트에 "k" 변수가 필요합니까?

int i, k ;

 
Zhunko :
예제조차도 테스트 스크립트에서 도움이되지 않습니까?
답변 감사합니다. 다른 방법으로 문제를 해결했습니다.))
 
semiromid :

이 부분은 모든 틱에서 트리거됩니다.

case OP_BUY:
//Задача для ордера типа OP_BUY
break ;

case OP_SELL:
//Задача для ордера типа OP_BUY
break ;


그리고 새로운 미결 주문이 있을 때마다 한 번만 작동해야 합니다.

티켓, 마술 또는 다른 주문 식별자로 일종의 카운터를 고정해야 합니까?

-------------------------------------------------- --------------------------------------

Orderov 변수를 만들어야 합니까?
그렇게 할 수 있습니까?

for (i= 0 ;i<OrdersTotal();i++)

스크립트에 "k" 변수가 필요합니까?

나는 모든 것을 올바르게 이해하지 못했습니다.

한 단어도 모른 채 독일어로 시를 써보려고 한다. 나는 분명히 쓰는가?

도움말을 읽고 언어의 모든 기능과 속성을 배우십시오. 당신은 몇 달을 보낼 것입니다. 예제를 살펴보십시오. MetaTrader4를 직접 설치할 때 사용할 수 있습니다. 그럼 채팅합시다. 그것이 무엇인지 이해할 때까지.

 
peshihod :

나는 모든 것을 올바르게 이해하지 못했습니다.

한 단어도 모른 채 독일어로 시를 써보려고 한다. 나는 분명히 쓰는가?

도움말을 읽고 언어의 모든 기능과 속성을 배우십시오. 당신은 몇 달을 보낼 것입니다. 예제를 살펴보십시오. MetaTrader4를 직접 설치할 때 사용할 수 있습니다. 그럼 채팅합시다. 그것이 무엇인지 이해할 때까지.


저는 프로그래밍이 처음이고 선생님이 없습니다. 그리고 나에게 중요한 질문에 대답하기 어렵다면 나에게 아무 것도 쓸 수 없었습니다.

그리고 나는 당신을 위해 당신에게로 향하고 있습니다, 실제로 .....

 
semiromid :


저는 프로그래밍이 처음이고 선생님이 없습니다. 그리고 나에게 중요한 질문에 대답하기 어렵다면 나에게 아무 것도 쓸 수 없었습니다.

그리고 나는 당신을 위해 당신에게로 향하고 있습니다, 실제로 .....


실례합니다.

나는 당신이 해안에서 수영하는 법을 배울 수 없다는 사실에 대해 썼습니다.

 
peshihod :


양해를 구합니다.

나는 당신이 해안에서 수영하는 법을 배울 수 없다는 사실에 대해 썼습니다.


때로는 무언가를 이해하기 위해 질문을 해야 합니다.

int Orderov;
int Tip;

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int i,k;

Orderov=OrdersTotal();

for (i= 0 ;i<Orderov;i++)
{
OrderSelect(i,SELECT_BY_POS);

switch ( OrderType() )
{
case OP_BUY:
//Задача для ордера типа OP_BUY
break ;

case OP_SELL:
//Задача для ордера типа OP_BUY
break ;

case OP_BUYLIMIT:
//Задача для ордера типа OP_BUY
break ;

/// //------ и т.д.




}
}

return ( 0 );
}

도움말 ....질문에 답하기 ..............

이 부분은 모든 틱 에서 트리거됩니다.

case OP_BUY:
//Задача для ордера типа OP_BUY
break ;

case OP_SELL:
//Задача для ордера типа OP_BUY
break ;


그리고 새로운 미결 주문이 있을 때마다 한 번만 작동해야 합니다.

티켓, 마법 또는 다른 주문 식별자 또는 배열로 일종의 카운터를 고정해야 합니까? 적어도 그것이 무엇과 관련되어 있는지 말해주세요. 이것을 이해할 때까지 나는 계속 나아갈 수 없을 것입니다.

-------------------------------------------------- --------------------------------------

Orderov 변수를 만들어야 합니까?
그렇게 할 수 있습니까?

for (i= 0 ;i<OrdersTotal();i++)

스크립트에 "k" 변수가 필요합니까?

int i, k ;