Per chi ha MarketFeeder pro 4.0
Inviato: 20/05/2006 - 08:28
E' da un pò che sto utilizzando la nuova versione, ma ho avuto l'esigenza di scrivere alcune formule aggiuntive per monitorare meglio i mercati, provo a darvi il codice di un modulo aggiuntivo in VBA.
Dopo aver creato il pulsante sulla barra di excell si può copiare il codice nell'editor di VBA.
Questa operazione si potrebbe fare anche direttamente sul foglio di MarketFeeder ma io ho preferito farlo su un altro foglio di lavoro per evitare eventuali conflitti con il codice originale.
Infatti la funzione è pubblica e può essere richiamata da qualsiasi posizione sul foglio attivo, quindi dopo aver collegato il nuovo pulsante ed aver aperto MarketFeeder potete lanciare il codice sul mercato che state visualizzando ed avrete le formule di monitoraggio.
Io le ho impostate in un certo modo ma vorrei avere anche delle altre idee che mi possano servire a migliorare il tutto o a modificarlo.
Public Sub Newfeeder()
'nome
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("N" & i) = "=A" & i
End If
Next
'indica il volume al momento dell'inizio del monitoraggio
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("P" & i) = ActiveSheet.Range("A" & i + 1).Value
End If
Next
'ultima quota scambiata al momento dell'inizio del monitoraggio
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("O" & i) = ActiveSheet.Range("E" & i).Value
End If
Next
'rapporto tra ultima quota scambiata e attuale quota scambiata <1 la quota scende
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("N" & i + 1) = "=E" & i & "/O" & i
End If
Next
'variazione volume
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("O" & i + 1) = "=A" & i + 1 & "-P" & i
End If
Next
'differenza disponibilità tra back e lay
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("P" & i + 1) = "=E" & i + 2
End If
Next
'calcola l'amount back
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("L" & i) = "=C5*(1/D" & i & ")"
End If
Next
'calcola l'amount lay
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("L" & i + 1) = "=C5*(1/D" & i & ")"
End If
Next
'calcola le richieste sul giocatore sommando il back ed il lay dell'altro
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("P" & i + 2) = "=F" & i + 2 & "+(S6-D" & i + 2 & ")"
End If
Next
'indica la quota back
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("K" & i) = "=F" & i
End If
Next
'indica la quota lay
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("K" & i + 1) = "=D" & i
End If
Next
'formattazione condizionale della variazione di volume
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("O" & i + 1).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="0.1"
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 3
End With
End If
Next
'formattazione condizionale della differenza di disponibilità tra back e lay
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("P" & i + 1).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:="0"
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 3
End With
End If
Next
'calcola il volume della disponibilità in lay cioè delle richieste
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("Q" & i + 2) = "=(F" & i + 2 & "/T6)*100"
End If
Next
'calcola il volume della disponibilità in back cioè delle offerte
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("O" & i + 2) = "=(D" & i + 2 & "/S6)*100"
End If
Next
'calcola la richiesta complessiva sul giocatore
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("N" & i + 2) = "=(P" & i + 2 & "/(S6+T6))*100"
End If
Next
'somme richieste
ActiveSheet.Range("T6") = "=F9+ F12"
'somme in offerta
ActiveSheet.Range("S6") = "=D9+ D12"
'differenza tra volume richieste e volume offerte
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("R" & i + 2) = "=O" & i + 2 & "-Q" & i + 2
End If
Next
'somma differenza volume e volume richieste (può essere utile in live ma più nell'ippica)
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("R" & i) = "=Q" & i + 2 & "-R" & i + 2
End If
Next
'formattazione condizionale volume richieste
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("Q" & i + 2).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="80"
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 3
End With
End If
Next
'formattazione condizionale differenza tra volume offerte e richieste
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("R" & i + 2).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:="0"
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 3
End With
End If
Next
'formattazione condizionale somma volume richieste e differenza richieste e offerte
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("R" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="120"
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 3
End With
End If
Next
'calcolo per determinare la convenienza tra back del giocatore che si intende puntare
'e lay del suo avversario, se superiore a 100 conviene il back
ActiveSheet.Range("N8") = "=(((F10-1)*100) * (D7-1))"
ActiveSheet.Range("N11") = "=(((F7-1)*100) * (D10-1))"
'formattazione condizionale della convenienza tra back e lay
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("N" & i + 1).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:="100"
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 3
End With
End If
Next
End Sub
Ho cercato di commentare passo passo, quando copierete il codice il commento sarà in verde nell'editor VBA.
Il tutto si riferisce al tennis ma ho una versione anche per l'ippica.
Aspetto collaborazione per sviluppi.Ciao
Dopo aver creato il pulsante sulla barra di excell si può copiare il codice nell'editor di VBA.
Questa operazione si potrebbe fare anche direttamente sul foglio di MarketFeeder ma io ho preferito farlo su un altro foglio di lavoro per evitare eventuali conflitti con il codice originale.
Infatti la funzione è pubblica e può essere richiamata da qualsiasi posizione sul foglio attivo, quindi dopo aver collegato il nuovo pulsante ed aver aperto MarketFeeder potete lanciare il codice sul mercato che state visualizzando ed avrete le formule di monitoraggio.
Io le ho impostate in un certo modo ma vorrei avere anche delle altre idee che mi possano servire a migliorare il tutto o a modificarlo.
Public Sub Newfeeder()
'nome
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("N" & i) = "=A" & i
End If
Next
'indica il volume al momento dell'inizio del monitoraggio
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("P" & i) = ActiveSheet.Range("A" & i + 1).Value
End If
Next
'ultima quota scambiata al momento dell'inizio del monitoraggio
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("O" & i) = ActiveSheet.Range("E" & i).Value
End If
Next
'rapporto tra ultima quota scambiata e attuale quota scambiata <1 la quota scende
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("N" & i + 1) = "=E" & i & "/O" & i
End If
Next
'variazione volume
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("O" & i + 1) = "=A" & i + 1 & "-P" & i
End If
Next
'differenza disponibilità tra back e lay
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("P" & i + 1) = "=E" & i + 2
End If
Next
'calcola l'amount back
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("L" & i) = "=C5*(1/D" & i & ")"
End If
Next
'calcola l'amount lay
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("L" & i + 1) = "=C5*(1/D" & i & ")"
End If
Next
'calcola le richieste sul giocatore sommando il back ed il lay dell'altro
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("P" & i + 2) = "=F" & i + 2 & "+(S6-D" & i + 2 & ")"
End If
Next
'indica la quota back
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("K" & i) = "=F" & i
End If
Next
'indica la quota lay
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("K" & i + 1) = "=D" & i
End If
Next
'formattazione condizionale della variazione di volume
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("O" & i + 1).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="0.1"
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 3
End With
End If
Next
'formattazione condizionale della differenza di disponibilità tra back e lay
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("P" & i + 1).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:="0"
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 3
End With
End If
Next
'calcola il volume della disponibilità in lay cioè delle richieste
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("Q" & i + 2) = "=(F" & i + 2 & "/T6)*100"
End If
Next
'calcola il volume della disponibilità in back cioè delle offerte
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("O" & i + 2) = "=(D" & i + 2 & "/S6)*100"
End If
Next
'calcola la richiesta complessiva sul giocatore
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("N" & i + 2) = "=(P" & i + 2 & "/(S6+T6))*100"
End If
Next
'somme richieste
ActiveSheet.Range("T6") = "=F9+ F12"
'somme in offerta
ActiveSheet.Range("S6") = "=D9+ D12"
'differenza tra volume richieste e volume offerte
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("R" & i + 2) = "=O" & i + 2 & "-Q" & i + 2
End If
Next
'somma differenza volume e volume richieste (può essere utile in live ma più nell'ippica)
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("R" & i) = "=Q" & i + 2 & "-R" & i + 2
End If
Next
'formattazione condizionale volume richieste
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("Q" & i + 2).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="80"
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 3
End With
End If
Next
'formattazione condizionale differenza tra volume offerte e richieste
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("R" & i + 2).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:="0"
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 3
End With
End If
Next
'formattazione condizionale somma volume richieste e differenza richieste e offerte
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("R" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="120"
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 3
End With
End If
Next
'calcolo per determinare la convenienza tra back del giocatore che si intende puntare
'e lay del suo avversario, se superiore a 100 conviene il back
ActiveSheet.Range("N8") = "=(((F10-1)*100) * (D7-1))"
ActiveSheet.Range("N11") = "=(((F7-1)*100) * (D10-1))"
'formattazione condizionale della convenienza tra back e lay
For i = 7 To 100 Step 3
If ActiveSheet.Range("A" & i) <> 0 Then
ActiveSheet.Range("N" & i + 1).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:="100"
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 3
End With
End If
Next
End Sub
Ho cercato di commentare passo passo, quando copierete il codice il commento sarà in verde nell'editor VBA.
Il tutto si riferisce al tennis ma ho una versione anche per l'ippica.
Aspetto collaborazione per sviluppi.Ciao