Megbízáskor hibát ír ki.2012-08-13T10:28:24+00:00
9 bejegyzés megtekintése - 1-9 / 9
  • Szerző
    Bejegyzés
  • liftfish
    Tag
    Bejegyzések száma: 5

    Sziasztok!
    Van egy robotom, ami elég jó kis stratégia szerint köt, de van egy hibája és nem tudok rájönni, hogy hol kell változtatni a kódon.
    A hiba: a megbízás beadásakor több számjegyet próbál küldeni. Pl: EUR/USD
    1,22796714. Ez egyértelműen sok.
    Ilyenkor ki ír egy hibát az expert fül alatt, ami a következő:
    inavilid price 1,22796714 for order send function
    Így a megbízást sem sikerül betennie. Ellenben az a hiba nem mindig áll fent de nagyrészt igen.

    Előre is köszi!

    Radulovic Attila
    Tag
    Bejegyzések száma: 646

    A NormalizeDouble(x, Digits); eljárást használd, az x természetesen a nyitási ár legyen. Ez meg fogja oldani az ilyen jellegű hibákat.

    liftfish
    Tag
    Bejegyzések száma: 5

    Szia!
    Köszönöm a gyors választ, de sajnos nem értek hozzá annyira.
    Bemásolnám ide a kódot, ha nem probléma.
    Meg tudnád nekem nézni?
    Előre is köszi!

    //+------------------------------------------------------------------+
    //|                                                       EM_VOL.mq4 |
    //|                                 Copyright © 2011, AutomatiKForeX |
    //|                           http://www.automatikforex.blogspot.com |
    //+------------------------------------------------------------------+
    //----
    extern int     MMType=1;       
    extern bool    UseClose=false; 
    extern bool    UseAdd=true;    
    extern double  LotExponent=1.2; 
    extern double  slip=3;   
    extern double  Lots=0.2; 
    extern double  LotsDigits=2;  
    extern double  TakeProfit=500; 
    extern double  Stoploss=500; 
    extern double  TrailStart=30;
    extern double  TrailStop=50;
    extern double  PipStep=30; 
    extern int     MaxTrades=30;
    extern bool    UseEquityStop=false;
    extern double  TotalEquityRisk=20; 
    extern bool    UseTrailingStop=true;
    extern bool    UseTimeOut=false;
    extern double  MaxTradeOpenHours=48;
    extern double MaximumRisk=0.008;
    //----
    int MagicNumber=675;
    double PriceTarget, StartEquity, BuyTarget, SellTarget;
    double AveragePrice, SellPoint, BuyPoint;
    double LastBuyPrice, LastSellPrice, ClosePrice, Spread;
    int flag;
    string EAName="EM-VOL 1/1vs C";
    datetime timeprev=0, expiration;
    int NumOfTrades=0;
    double iLots;
    int cnt=0, total;
    double Stopper=0;
    bool TradeNow=false, LongTrade=false, ShortTrade=false;
    int ticket;
    bool NewOrdersPlaced=false;
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    int init()
      {
       Spread=MarketInfo(Symbol(), MODE_SPREAD)*Point;
       return(0);
      }
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    int deinit()
      {
       return(0);
      }
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
      int start()
      {
         if (UseTrailingStop)
         {
          TrailingAlls(TrailStart, TrailStop, AveragePrice);
         }
         if (UseTimeOut){
            if(CurTime()>=expiration)
            {
             CloseThisSymbolAll();
             Print("Closed All due to TimeOut");
            }
         }
         if(timeprev==Time[0])
         {
          return(0);
         }
       timeprev=Time[0];
    //----
       double CurrentPairProfit=CalculateProfit();
         if(UseEquityStop){
            if(CurrentPairProfit(TotalEquityRisk/100)*AccountEquityHigh())
            {
             CloseThisSymbolAll();
             Print("Closed All due to Stop Out");
             NewOrdersPlaced=false;
            }
         }
       total=CountTrades();
    //----
         if (total==0)
         {
          flag=0;
         }
       double LastBuyLots;
       double LastSellLots;
         for(cnt=OrdersTotal()-1;cnt>=0;cnt--){
          OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
          if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)continue;
          if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
               if(OrderType()==OP_BUY)
               {
                LongTrade=true;
                ShortTrade=false;
                LastBuyLots=OrderLots();
                break;
               }
          if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
               if(OrderType()==OP_SELL)
               {
                LongTrade=false;
                ShortTrade=true;
                LastSellLots=OrderLots();
                break;
               }
         }
         
         double PivPnt=(iHigh(Symbol(),0,1)+iLow(Symbol(),0,1)+iClose(Symbol(),0,1)+iOpen(Symbol(),0,1))/4;
         
          double Res1=iHigh(Symbol(),0,1)+iATR(Symbol(),0,14,1);
          double Sup1=iLow(Symbol(),0,1)-iATR(Symbol(),0,14,1);
          double C1=iClose(Symbol(),0,1);
          double O1=iOpen(Symbol(),0,1);
          double L1=iLow(Symbol(),0,1);
          double H1=iHigh(Symbol(),0,1);
          double BandUP=iBands(Symbol(),0,20,2,0,PRICE_CLOSE,MODE_UPPER,0);
          double BandDown=iBands(Symbol(),0,20,2,0,PRICE_CLOSE,MODE_LOWER,0);
          double L2=iLow(Symbol(),0,2);
          double H2=iHigh(Symbol(),0,2);
          double C2=iClose(Symbol(),0,2);
          double ADX=iADX(NULL,0,14,PRICE_CLOSE,MODE_MAIN,1);
         if(total>0 && total=(PipStep*Point))
            {
             TradeNow=true;
            }
            if(ShortTrade && (Bid - LastSellPrice)>=(PipStep*Point))
            {
             TradeNow=true;
            }
         }
         if (total 0)
                  {//#
                   RefreshRates();
                   ticket=OpenPendingOrder(OP_SELL,iLots,Bid,slip,Ask,0,0,EAName+"-"+NumOfTrades,MagicNumber,0,Orange);
                   if(ticket0)
                     {//#
                      ticket=OpenPendingOrder(OP_BUY,iLots,Ask,slip,Bid,0,0,EAName+"-"+NumOfTrades,MagicNumber,0,Blue);
                      if(ticket<0)
                      {Print("Error: ",GetLastError()); return(0);}
                      LastBuyPrice=FindLastBuyPrice();
                      TradeNow=false;
                      NewOrdersPlaced=true;
                     }//#
                  }
               }
         }
         if (TradeNow && total<1)
         {
          
          SellPoint=Sup1-(1*Point);
          BuyPoint=Res1+(1*Point);
            if(!ShortTrade)
            {
             NumOfTrades=total;
               if(ADX0)
                  {//#
                   ticket=OrderSend(Symbol(),OP_SELLSTOP,lots,SellPoint,slip,0,0,EAName+"-"+NumOfTrades,MagicNumber,0,Red);
                   if(ticket<0){Print(iLots,"Error: ",GetLastError()); return(0);
                   }
                   LastBuyPrice=FindLastBuyPrice();
                   NewOrdersPlaced=true;
                  }//#
               }
              if(!LongTrade)
              NumOfTrades=total;
               if(ADX0)
                  
                  {//#      
                   ticket=OrderSend(Symbol(),OP_BUYSTOP,lots,BuyPoint,slip,0,0,EAName+"-"+NumOfTrades,MagicNumber,0,Lime);
                   if(ticket0) expiration=CurTime()+MaxTradeOpenHours*60*60;
          TradeNow=false;
         }
    //----------------------- CALCULATE AVERAGE OPENING PRICE
       total=CountTrades();
       AveragePrice=0;
       double Count=0;
       for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
         {
          OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
          if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)
             continue;
          if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
             if(OrderType()==OP_BUY || OrderType()==OP_SELL)
               {
                AveragePrice=AveragePrice+OrderOpenPrice()*OrderLots();
                Count=Count + OrderLots();
               }
         }
       if(total > 0)
          AveragePrice=NormalizeDouble(AveragePrice/Count, Digits);
    //----------------------- RECALCULATE STOPLOSS & PROFIT TARGET BASED ON AVERAGE OPENING PRICE
       if(NewOrdersPlaced)
          for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
            {
             OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
             if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)
                continue;
             if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
                if(OrderType()==OP_BUY) // Calculate profit/stop target for long 
                  {
                   PriceTarget=AveragePrice+(TakeProfit*Point);
                   BuyTarget=PriceTarget;
                   Stopper=AveragePrice-(Stoploss*Point);
                   //      Stopper=0; 
                   flag=1;
                  }
             if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
                if(OrderType()==OP_SELL) // Calculate profit/stop target for short
                  {
                   PriceTarget=AveragePrice-(TakeProfit*Point);
                   SellTarget=PriceTarget;
                   Stopper=AveragePrice+(Stoploss*Point);
                   //      Stopper=0; 
                   flag=1;
                  }
            }
    //----------------------- IF NEEDED CHANGE ALL OPEN ORDERS TO NEWLY CALCULATED PROFIT TARGET    
       if(NewOrdersPlaced)
          if(flag==1)// check if average has really changed
            {
             for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
               {
                //     PriceTarget=total;
                OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
                if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)
                   continue;
                if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
                   //      OrderModify(OrderTicket(),0,Stopper,PriceTarget,0,Yellow);// set all positions to averaged levels
                   OrderModify(OrderTicket(),AveragePrice,OrderStopLoss(),PriceTarget,0,Yellow);// set all positions to averaged levels
                NewOrdersPlaced=false;
               }
            }
      }
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    double ND(double v){return(NormalizeDouble(v,Digits));}
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
      int fOrderCloseMarket(bool aCloseBuy=true,bool aCloseSell=true)
      {
       int tErr=0;
         for(int i=OrdersTotal()-1;i>=0;i--)
         {
            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
            {
               if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
               {
                  if(OrderType()==OP_BUY && aCloseBuy)
                  {
                   RefreshRates();
                     if(!IsTradeContextBusy())
                     {
                        if(!OrderClose(OrderTicket(),OrderLots(),ND(Bid),5,CLR_NONE))
                        {
                         Print("Error close BUY "+OrderTicket());//+" "+fMyErDesc(GetLastError())); 
                         tErr=-1;
                        }
                     }
                     else
                     {
                      static int lt1=0;
                        if(lt1!=iTime(NULL,0,0))
                        {
                         lt1=iTime(NULL,0,0);
                         Print("Need close BUY "+OrderTicket()+". Trade Context Busy");
                        }
                      return(-2);
                     }
                  }
                  if(OrderType()==OP_SELL && aCloseSell)
                  {
                   RefreshRates();
                     if(!IsTradeContextBusy())
                     {
                        if(!OrderClose(OrderTicket(),OrderLots(),ND(Ask),digit,CLR_NONE))
                        {
                         Print("Error close SELL "+OrderTicket());//+" "+fMyErDesc(GetLastError())); 
                         tErr=-1;
                        }
                     }
                     else
                     {
                      static int lt2=0;
                        if(lt2!=iTime(NULL,0,0))
                        {
                         lt2=iTime(NULL,0,0);
                         Print("Need close SELL "+OrderTicket()+". Trade Context Busy");
                        }
                      return(-2);
                     }
                  }
               }
            }
         }
       return(tErr);
      }
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
      double fGetLots(int aTradeType)
      {
       double tLots;
         switch(MMType)
         {
             case 0:
                tLots=Lots;
                break;
             case 1:
                tLots=NormalizeDouble(Lots*MathPow(LotExponent,NumOfTrades),LotsDigits);
                break;
             case 2:
                int LastClosedTime=0;
                tLots=Lots;
                  for(int i=OrdersHistoryTotal()-1;i>=0;i--)
                  {
                     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
                     {
                        if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
                        {
                           if(LastClosedTime<OrderCloseTime())
                           {
                            LastClosedTime=OrderCloseTime();
                              if(OrderProfit()<0)
                              {
                               tLots=NormalizeDouble(OrderLots()*LotExponent,LotsDigits);
                              }
                              else
                              {
                               tLots=Lots;
                              }
                           }
                        }
                     }
                     else
                     {
                      return(-3);
                     }
                  }
                break;
            }
            if(AccountFreeMarginCheck(Symbol(),aTradeType,tLots)=0;trade--)
                  {
                   OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
                   if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)
                      continue;
                   if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
                      if(OrderType()==OP_SELL || OrderType()==OP_BUY)
                         count++;
                  }//for
                return(count);
               }
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
             void CloseThisSymbolAll()
               {
                int trade;
                for(trade=OrdersTotal()-1;trade>=0;trade--)
                  {
                   OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
                   if(OrderSymbol()!=Symbol())
                      continue;
                   if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber)
                     {
                      if(OrderType()==OP_BUY)
                         OrderClose(OrderTicket(),OrderLots(),Bid,slip,Blue);
                      if(OrderType()==OP_SELL)
                         OrderClose(OrderTicket(),OrderLots(),Ask,slip,Red);
                     }
                   Sleep(1000);
                  }
               }
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
             int OpenPendingOrder(int pType,double pLots,double pLevel,int sp, double pr, int sl, int tp,string pComment,int pMagic,datetime pExpiration,color pColor)
               {
                int ticket=0;
                int err=0;
                int c=0;
                int NumberOfTries=100;
                switch(pType)
                  {
                   case OP_BUYLIMIT:
                      for(c=0;c < NumberOfTries;c++)
                        {
                         ticket=OrderSend(Symbol(),OP_BUYLIMIT,pLots,pLevel,sp,StopLong(pr,sl),TakeLong(pLevel,tp),pComment,pMagic,pExpiration,pColor);
                         err=GetLastError();
                         if(err==0)
                           {
                            break;
                           }
                         else
                           {
                            if(err==4 || err==137 ||err==146 || err==136) //Busy errors
                              {
                               Sleep(1000);
                               continue;
                              }
                            else //normal error
                              {
                               break;
                              }
                           }
                        }
                      break;
                   case OP_BUYSTOP:
                      for(c=0;c < NumberOfTries;c++)
                        {
                         ticket=OrderSend(Symbol(),OP_BUYSTOP,pLots,pLevel,sp,StopLong(pr,sl),TakeLong(pLevel,tp),pComment,pMagic,pExpiration,pColor);
                         err=GetLastError();
                         if(err==0)
                           {
                            break;
                           }
                         else
                           {
                            if(err==4 || err==137 ||err==146 || err==136) //Busy errors
                              {
                               Sleep(5000);
                               continue;
                              }
                            else //normal error
                              {
                               break;
                              }
                           }
                        }
                      break;
                   case OP_BUY:
                      for(c=0;c < NumberOfTries;c++)
                        {
                         RefreshRates();
                         ticket=OrderSend(Symbol(),OP_BUY,pLots,Ask,sp,StopLong(Bid,sl),TakeLong(Ask,tp),pComment,pMagic,pExpiration,pColor);
                         err=GetLastError();
                         if(err==0)
                           {
                            break;
                           }
                         else
                           {
                            if(err==4 || err==137 ||err==146 || err==136) //Busy errors
                              {
                               Sleep(5000);
                               continue;
                              }
                            else //normal error
                              {
                               break;
                              }
                           }
                        }
                      break;
                   case OP_SELLLIMIT:
                      for(c=0;c < NumberOfTries;c++)
                        {
                         ticket=OrderSend(Symbol(),OP_SELLLIMIT,pLots,pLevel,sp,StopShort(pr,sl),TakeShort(pLevel,tp),pComment,pMagic,pExpiration,pColor);
                         err=GetLastError();
                         if(err==0)
                           {
                            break;
                           }
                         else
                           {
                            if(err==4 || err==137 ||err==146 || err==136) //Busy errors
                              {
                               Sleep(5000);
                               continue;
                              }
                            else //normal error
                              {
                               break;
                              }
                           }
                        }
                      break;
                   case OP_SELLSTOP:
                      for(c=0;c < NumberOfTries;c++)
                        {
                         ticket=OrderSend(Symbol(),OP_SELLSTOP,pLots,pLevel,sp,StopShort(pr,sl),TakeShort(pLevel,tp),pComment,pMagic,pExpiration,pColor);
                         err=GetLastError();
                         if(err==0)
                           {
                            break;
                           }
                         else
                           {
                            if(err==4 || err==137 ||err==146 || err==136) //Busy errors
                              {
                               Sleep(5000);
                               continue;
                              }
                            else //normal error
                              {
                               break;
                              }
                           }
                        }
                      break;
                   case OP_SELL:
                      for(c=0;c =0;cnt--)
                  {
                   OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
                   if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)
                      continue;
                   if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
                      if(OrderType()==OP_BUY || OrderType()==OP_SELL)
                        {
                         Profit=Profit+OrderProfit();
                        }
                  }
                return(Profit);
               }
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
             void TrailingAlls(int start,int stop, double AvgPrice)
               {
                int profit;
                double stoptrade;
                double stopcal;
                if(stop==0)
                   return;
                int trade;
                for(trade=OrdersTotal()-1;trade>=0;trade--)
                  {
                   if(!OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
                      continue;
                   if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)
                      continue;
                   if(OrderSymbol()==Symbol()||OrderMagicNumber()==MagicNumber)
                     {
                      if(OrderType()==OP_BUY)
                        {
                         profit=NormalizeDouble((Bid-AvgPrice)/Point,0);
                         if(profitstoptrade))
                            //     OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,OrderTakeProfit(),0,Blue);
                            OrderModify(OrderTicket(),AvgPrice,stopcal,OrderTakeProfit(),0,Aqua);
                        }//Long
                      if(OrderType()==OP_SELL)
                        {
                         profit=NormalizeDouble((AvgPrice-Ask)/Point,0);
                         if(profit<start)
                            continue;
                         stoptrade=OrderStopLoss();
                         stopcal=Ask+(stop*Point);
                         if(stoptrade==0||(stoptrade!=0&&stopcal<stoptrade))
                            //     OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,OrderTakeProfit(),0,Red);
                            OrderModify(OrderTicket(),AvgPrice,stopcal,OrderTakeProfit(),0,Red);
                        }//Shrt
                     }
                   Sleep(1000);
                  }//for
               }
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
             double AccountEquityHigh()
               {
                static double AccountEquityHighAmt,PrevEquity;
                if(CountTrades()==0) AccountEquityHighAmt=AccountEquity();
                if(AccountEquityHighAmt =0;cnt--)
                  {
                   OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
                   if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)
                      continue;
                   if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY)
                     {
                      ticketnumber=OrderTicket();
                      if(ticketnumber>oldticketnumber)
                        {
                         orderprice=OrderOpenPrice();
                         oldorderopenprice=orderprice;
                         oldticketnumber=ticketnumber;
                        }
                     }
                  }
                return(orderprice);
               }
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
             double FindLastSellPrice()
               {
                double oldorderopenprice=0, orderprice;
                int cnt, oldticketnumber=0, ticketnumber;
                for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
                  {
                   OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
                   if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)
                      continue;
                   if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL)
                     {
                      ticketnumber=OrderTicket();
                      if(ticketnumber>oldticketnumber)
                        {
                         orderprice=OrderOpenPrice();
                         oldorderopenprice=orderprice;
                         oldticketnumber=ticketnumber;
                        }
                     }
                  }
                return(orderprice);
               }
    //+----------
    Radulovic Attila
    Tag
    Bejegyzések száma: 646

    Minden OrderSend() függvény 4. paraméterét foglald bele az x helyére!

    Tehát ha ez van: SellPoint

    akkor ezt cseréld ki

    NormalizeDouble(SellPoint, Digits)

    -re! És így tovább…

    liftfish
    Tag
    Bejegyzések száma: 5

    Szia Radu!
    Köszi a választ!
    Esetleg egy példát tudnál nekem írni(mutatni), ha nem túl nagy gond?

    liftfish
    Tag
    Bejegyzések száma: 5

    Esetleg privát üzenetet tudok neked küldeni? Mert ha meg tudnád csinálni nekem, akkor megbeszélnénk a részleteket.
    Előre is köszi!

    Radulovic Attila
    Tag
    Bejegyzések száma: 646

    A névjegy menüpontban megtalálod az e-mail címemet!

    liftfish
    Tag
    Bejegyzések száma: 5

    Szia Radu!
    Felvettem veled a kapcsolatot a privát email- eden, ellenben még nem jött válasz.
    Csak azt szeretném kérdezni, hogy sikerült e megkapni és elolvasni?
    Köszi!

    Radulovic Attila
    Tag
    Bejegyzések száma: 646

    Most tudtam csak reagálni – email ment.

9 bejegyzés megtekintése - 1-9 / 9

A hozzászóláshoz jelentkezz be!

Adhatok Neked még több ingyenes tartalmat?

Értesítelek hetente megjelenő új tartalmaimról.

Hozzájárulok, hogy az adatvédelmi nyilatkozat szerint biztonságosan kezeld megadott adataimat, valamint hasznos anyagokat és egyedi ajánlatokat küldj nekem termékeiddel, szolgáltatásaiddal kapcsolatban e-mailben